Git Fugitive bagaimana cara git menambahkan potongan kode yang dipilih secara visual

14

Saya ingin tahu apakah saya dapat memilih beberapa kode dalam mode visual dan git additu?

Saya memeriksa dengan fugitive.vim tetapi saya tidak menemukan cara melakukannya.

Apa itu mungkin ? Atau adakah plugin lain untuk melakukannya?

albttx
sumber

Jawaban:

14

Mungkin ada cara lain, tetapi pendekatan ini memungkinkan Anda melakukan lebih dari sekadar menambahkan chunk, itulah sebabnya saya cenderung menggunakannya cukup banyak.

  1. Jalankan :Gdiffperintah. Ini akan membuka pemisahan dengan versi file saat ini yang saat ini ada di indeks ke kiri / atas jendela asli.

  2. Saat berada di jendela asli (kanan atau bawah), lakukan pemilihan visual perubahan yang Anda inginkan git add.

  3. Jalankan :diffputperintah, yang dapat beroperasi pada kisaran. ( dpKunci tidak berfungsi dalam mode Visual.)

  4. Tutup perubahan penyimpanan jendela kedua itu untuk memperbarui file dalam indeks. Di sini Anda dapat mengeditnya sesuka Anda sebelum menyimpan, tidak harus sama persis dengan versi asli atau baru file.

Pikiran yang :diffputmungkin tidak selalu memberi Anda apa yang Anda harapkan tergantung pada struktur perubahan (terutama jika Anda hanya melakukan bagian dari blok perubahan yang berdekatan). Jadi jangan lupa untuk memvalidasi komit. Dalam sebagian besar situasi praktis ini berfungsi dengan baik.

xaizek
sumber
7

Vimcasts memiliki seri hebat di Fugitive.vim . Episode Fugitive.vim - bekerja dengan indeks git akan menjadi yang paling membantu untuk pertanyaan Anda.

Anda dapat menggunakan :Gdiffuntuk hanya menampilkan sebagian file. Menjalankan :Gdiffakan menunjukkan kepada Anda file saat ini "berbeda" dengan tahap / indeks. Anda dapat menggunakan perintah diff Vim ini ( dp, do, :diffput, dan :diffget) untuk memindahkan cowok ke tahap / index. Kemudian Anda menulis file stage / index seperti buffer lainnya, :w/ :x.

Peter Rincker
sumber
Saya menggunakan :Gstatus+ Duntuk melakukan hal yang sama dengan buron. Dengan cara ini saya juga dapat memilih file yang saya operasikan di antara daftar file yang telah dimodifikasi.
Luc Hermitte
6

Ketika Anda secara khusus bertanya tentang solusi yang menggunakan plugin lain, saya akan perhatikan bahwa Anda juga dapat mengatur pilihan visual menggunakan vimagit , yang merupakan plugin Git (berdasarkan pada plugin Magit populer dari editor lainnya) ) berpusat di sekitar melihat, staging, dan melakukan perubahan.

Untuk melakukan tahap pemilihan visual menggunakan Vimagit:

  1. Jalankan :Magitperintah untuk membuka buffer baru yang menampilkan semua bakhil yang diubah di repositori Anda (bukan hanya dalam satu file),

  2. Temukan garis yang ingin Anda panggungkan dan lakukan visualseleksi Anda ,

  3. Tekan "panggung" pemetaan: S.

Kaya
sumber
6

Panggung Lengkap atau Partial Hunks dengan vim-gitgutter

  1. Stage Complete Hunk

    • <Leader>hs atau
    • :GitGutterStageHunk
  2. Tahap Bagian dari Hunk khusus Penambahan (sejak 8/2019)

    • Mode visual

      • {Visual}<Leader>hs
      • :'<,'>GitGutterStageHunk
        ( '<,'>seperti biasa dimasukkan untuk Anda)
    • Jarak

      • :42,45GitGutterStageHunk
  3. Tahap Bagian dari Hunk apa pun melalui Jendela Pratinjau (sejak 8/2019)

    • Pratinjau cowok, mis <Leader>hp
    • Pindah ke jendela pratinjau, mis :wincmd P
    • Hapus garis yang tidak ingin Anda tampilkan
    • Panggung garis yang tersisa, misalnya <Leader>hsatau:GitGutterStageHunk

Diperbarui: 17.8.2019 karena komit bc1d28d dan b036fcf baru-baru ini

Hotschke
sumber
Ia meminta pelarian-vim, bukan vim-gitgutter
giggi__