Apakah ada perintah yang memungkinkan Anda untuk membatalkan sebagian perubahan ke file (atau file) di direktori kerja?
Misalkan Anda telah banyak mengedit file tetapi Anda menyadari bahwa Anda ingin membatalkan beberapa perubahan kembali ke status yang dikomit, tetapi bukan perubahan lainnya.
Saya membayangkan opsi untuk git checkout
itu bekerja sangat mirip git add -p
, yaitu melewati file hunk demi hunk dan menanyakan apakah Anda ingin menyimpannya atau tidak.
revert
perintah sistem kontrol versi lain memungkinkan Anda memilih perubahan mana di dalam file yang dikembalikan? Benar-benar bertanya, karena saya hanya memiliki pengalaman dengan CVS dan Git. Di Git,git checkout -- path/to/file
ada satu perintah yang mengembalikan semua perubahan dalam file itu, tetapi ini tidak sama seperti di atas.git checkout --patch
dangit reset --patch
yang berfungsi sepertigit add --patch
di git terbaru.--
biasanya menunjukkan akhir dari penguraian opsi, dan argumen apa pun yang muncul setelahnya harus diinterpretasikan secara harfiah. Ini berarti Anda tidak perlu menambahkan./
sebelum nama file yang dimulai dengan tanda minus, jika nama file muncul setelahnya--
.git checkout --patch
diff tampaknya mundur. Simbol minus adalah MENAMBAHKAN teks ke copy pekerjaan saya, dan simbol plus adalah MENGHAPUS baris dari copy pekerjaan saya.Dengan versi git> = 1.7.1 saya bisa
Saya tidak yakin kapan fitur ini diperkenalkan.
sumber
git reset -p
perubahan secara selektif untuk menghapus pentas dari area / indeks pementasan. Saya juga tidak tahu kapan versi Git ini diperkenalkan.git checkout $file
mengembalikan status file$file
ke status komitmen terakhir. Saya rasa Anda dapat menggunakangit checkout SHA-1 -- $file
untuk mengembalikan file ke komit yang diidentifikasi oleh SHA-1.sumber
Berapa banyak komitmen yang Anda perlukan untuk kembali dan memilih dari? Jika hanya satu, mungkin ambil cabang sebelum itu, periksa file yang Anda komit dan kemudian gunakan
git add -p
untuk menambahkannya sesuai keinginan Anda. Kemudian Anda dapat kembali ke tempat Anda sebelumnya dan melakukan pembayaran file dari cabang sementara Anda.itu adalah:
Alternatif lain termasuk kembali dan mengedit komit dengan
git rebase -i
(menandai komit sebagaiedit
, lalu melakukangit reset HEAD^
dan mengulangi komit ketika jatuh kembali ke shell).Jika perubahan yang perlu Anda pilih tersebar pada serangkaian komit, mungkin lebih baik mengekstraknya sebagai tambalan (atau tambalan yang mencakup semuanya) dan mengedit tambalan secara manual, mengambil perubahan yang ingin Anda pertahankan, dan memasukkan sisa ke
git apply --reverse
.sumber