Git Fugitive cách git thêm một đoạn mã được chọn trực quan


13

Tôi muốn biết nếu tôi có thể chọn một số mã trong chế độ trực quan và git addnó?

Tôi đã kiểm tra với fugitive.vim nhưng tôi không tìm thấy cách nào để làm điều đó.

Có thể không? Hoặc có plugin nào khác để làm điều đó?

Câu trả lời:


12

Có thể có những cách khác, nhưng cách tiếp cận này cho phép bạn làm nhiều hơn là thêm một đoạn, đó là lý do tại sao tôi có xu hướng sử dụng nó khá nhiều.

  1. Chạy :Gdifflệnh. Nó sẽ mở một phần tách với phiên bản của tệp hiện tại đang nằm trong chỉ mục ở bên trái / trên cùng của cửa sổ gốc.

  2. Trong khi ở cửa sổ gốc (bên phải hoặc dưới cùng), hãy thực hiện lựa chọn trực quan các thay đổi bạn muốn git add.

  3. Chạy :diffputlệnh, có thể hoạt động trên một phạm vi. ( dpkhóa không hoạt động ở chế độ Visual.)

  4. Đóng cửa sổ thứ hai lưu thay đổi để cập nhật tệp trong chỉ mục. Tại đây bạn có thể chỉnh sửa nó theo cách bạn muốn trước khi lưu, nó không phải khớp chính xác với phiên bản gốc hoặc phiên bản mới của tệp.

Lưu ý rằng :diffputkhông phải lúc nào bạn cũng có thể cung cấp cho bạn những gì bạn mong đợi tùy thuộc vào cấu trúc của các thay đổi (đặc biệt nếu bạn chỉ cam kết một phần của khối thay đổi liền kề). Vì vậy, đừng quên xác nhận cam kết. Trong hầu hết các tình huống thực tế, nó hoạt động tốt mặc dù.


7

Vimcasts có một loạt tuyệt vời trên Fugitive.vim . Tập Fugitive.vim - làm việc với chỉ số git sẽ hữu ích nhất cho câu hỏi của bạn.

Bạn có thể sử dụng :Gdiffđể giai đoạn chỉ một phần của một tập tin. Chạy :Gdiffsẽ hiển thị cho bạn tệp hiện tại "diff-ed" với giai đoạn / chỉ mục. Bạn chỉ có thể sử dụng lệnh diff Vim của ( dp, do, :diffput, và :diffget) để di chuyển hunk lên sân khấu / index. Sau đó, bạn viết tập tin giai đoạn / chỉ mục giống như bất kỳ bộ đệm nào khác, :w/ :x.


Tôi đang sử dụng :Gstatus+ Dđể làm tương tự với fugitive. Bằng cách này, tôi cũng có thể chọn tệp tôi đang hoạt động trong danh sách các tệp đã được sửa đổi.
Luc Hermitte

6

Như bạn đã hỏi cụ thể về các giải pháp sử dụng các plugin khác, tôi sẽ lưu ý rằng bạn cũng có thể thực hiện các lựa chọn trực quan bằng vimagit , đó là một plugin Git (dựa trên plugin Magit phổ biến của trình soạn thảo khác ) tập trung vào xem, dàn dựng và cam kết thay đổi.

Để tạo giai đoạn lựa chọn trực quan bằng Vimagit:

  1. Chạy :Magitlệnh để mở bộ đệm mới hiển thị tất cả các khối đã thay đổi trong kho lưu trữ của bạn (không chỉ trong một tệp),

  2. Xác định vị trí các dòng bạn muốn giai đoạn và thực hiện visuallựa chọn của bạn ,

  3. Nhấn vào ánh xạ "giai đoạn" : S.


6

Giai đoạn hoàn thành hoặc một phần Hunks với vim-gitgutter

  1. Giai đoạn hoàn thành Hunk

    • <Leader>hs hoặc là
    • :GitGutterStageHunk
  2. Phần Giai đoạn của một Hunk chỉ bổ sung (kể từ 8/2019)

    • Chế độ trực quan

      • {Visual}<Leader>hs
      • :'<,'>GitGutterStageHunk
        ( '<,'>luôn được chèn cho bạn)
    • Phạm vi

      • :42,45GitGutterStageHunk
  3. Phần sân khấu của bất kỳ Hunk nào qua Cửa sổ xem trước (kể từ 8/2019)

    • Xem trước hunk, ví dụ <Leader>hp
    • Di chuyển đến cửa sổ xem trước, ví dụ :wincmd P
    • Xóa các dòng bạn không muốn giai đoạn
    • Giai đoạn các dòng còn lại, ví dụ <Leader>hshoặc:GitGutterStageHunk

Đã cập nhật: 17.8.2019 do các cam kết gần đây bc1d28db036fcf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.