Saya suka git add --interactive . Sekarang bagian dari alur kerja harian saya.
Masalahnya tampaknya tidak berfungsi dengan file yang tidak dilacak. Yang ingin saya lakukan adalah melacak file baru, tetapi hanya menambahkan sebagian saja, yaitu beberapa bagian dari file baru ini belum siap untuk dipentaskan.
Sebagai contoh, dengan git add -i, saya dapat memilih opsi tambalan dan bahkan mengedit bakhil masing-masing untuk mem-tahap-kan bagian dari kode baru, meninggalkan komentar kode debug yang tidak dipentaskan. Saya suka bekerja dengan cara ini karena itu membuat jelas tempat mega patch yang saat ini saya kerjakan masih membutuhkan pekerjaan.
Sayangnya, saya sepertinya tidak dapat melakukan hal yang sama dengan file yang tidak terlacak. Entah saya menampilkan seluruh file, atau tidak sama sekali. Solusinya saya telah menggunakan adalah pementasan atau bahkan melakukan file baru ketika kosong, dan kemudian pementasan perubahan individu dengan cara biasa. Tetapi solusi ini terasa seperti hack kotor dan ketika saya lupa, atau berubah pikiran, itu menciptakan lebih banyak masalah daripada seharusnya.
Jadi pertanyaannya adalah: Bagaimana mem-stage hanya sebagian file baru, sehingga file baru ini dilacak tetapi membiarkan seluruh atau sebagian kontennya tidak di-stage?
</shame>
-N
penemuan, terima kasih! Meskipun aku lebih suka menggabungkannya dengan-p
itu.gid add -N the_file
&git add -p
. Orang harus menambahkan itu-N
juga berfungsi dengan-A
Cara termudah untuk melakukan ini (dan pementasan interaktif imho secara umum) adalah
git gui
. Itu datang dibundel dengan git dan harus bekerja pada hampir semua platform yang didukung oleh git.Cukup jalankan
git gui
dan gui akan terbuka yang memungkinkan pementasan dan pementasan bakhil dan bahkan satu baris file yang dilacak dan tidak terlacak.sumber
git gui
. Dalam Debian, misalnya, itu dalam paket terpisah yang disebut 'git-gui'.git gui
tidak pernah berhasil. Bahkan, ini menonaktifkan opsi menu ini .git gui
file baru, Anda harus menjalankannyagit add -N new_file
dulu - lihat jawaban Richard Hansen.Demo sederhana:
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
. Saya tidak merekomendasikan melakukan itu_NUL:
saja/dev/null
. Kalau tidak, gunakan sesuatu sepertiecho -n '' | git hash-object --stdin -w
Sekarang indeks akan berisi
newfile
sebagai gumpalan kosong, dan gumpalan kosong telah dimasukkan ke dalam database objek jika belum ada:Ini harus tepat seperti yang Anda inginkan. Bolehkah saya juga merekomendasikan plugin pelarian vim untuk manajemen indeks yang sangat cerdas (lihat Better git add -p? )
sumber
Sunting: ini sepertinya tidak berfungsi sekarang. Saya yakin itu sebelumnya (pada git 1.7.1). Jika itu tidak berhasil, saya sarankan pementasan
/dev/null
seperti yang disarankan di atas:Jika Anda menggunakan Windows (tanpa
/dev/null
) maka Anda dapat menggantinya dengan path ke file kosong.Jawaban asli
Kamu ingin
Ini menambahkan file yang tidak terlacak bagi saya. Dari halaman manual:
sumber
git add -p newfile
tidak bekerja sama sekali (efek nu) dangit add --interactive
'[a] dd untracked' memiliki efek yanggit add newfile
memiliki; Sunting juga diperiksa dengan git 1.7.5.3; no daduHanya untuk catatan kemungkinan lain: saya gunakan
Dan kemudian Anda dapat melakukan stage hunks, atau mengeditnya di tempat.
sumber
add -N
denganadd -i
. Saya hanya menambahkan bahwaadd -p
alih - alihadd -i
bekerja juga.