Dengan SVN, mudah untuk menggabungkan balik komit, tetapi bagaimana melakukannya dengan Git?
Dengan SVN, mudah untuk menggabungkan balik komit, tetapi bagaimana melakukannya dengan Git?
Jawaban:
Untuk membuat komit baru yang 'membatalkan' perubahan dari komit sebelumnya, gunakan:
$ git revert <commit>
Dimungkinkan juga untuk benar-benar menghapus komit dari titik arbitrer di masa lalu dengan melakukan rebasing dan kemudian menyetel ulang, tetapi Anda benar-benar tidak ingin melakukannya jika Anda telah mendorong komit ke repositori lain (atau orang lain telah menarik dari Anda) .
-m <parent number>
opsi git revert
untuk menentukan perubahan mana yang akan dikembalikan. Jika Anda ingin membatalkan penggabungan riwayat yang tidak diterbitkan, gunakan git reset --hard HEAD^1
.
-m
cara penggabungan mendatang dari cabang yang tidak digabungkan tidak akan menyertakan perubahan dari sebelum penggabungan itu! Lihat schacon.github.com/git/howto/revert-a-faulty-merge.txt untuk mengetahui cara yang tepat untuk menggabungkan kembali cabang yang tidak digabungkan.
Untuk mengembalikan sebuah gabungan komit, Anda perlu menggunakan: git revert -m <parent number>
. Jadi misalnya, untuk mengembalikan komit gabungan terbaru menggunakan induk dengan nomor 1 Anda akan menggunakan:
git revert -m 1 HEAD
Untuk mengembalikan komit gabungan sebelum komit terakhir, Anda akan melakukan:
git revert -m 1 HEAD^
Gunakan git show <merge commit SHA1>
untuk melihat orang tua, penomoran adalah urutan kemunculannya misalnyaMerge: e4c54b3 4725ad2
dokumentasi git merge: http://schacon.github.com/git/git-merge.html
diskusi git merge (membingungkan tapi sangat detail): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git show <merge commit SHA1>
untuk melihat orang tua, penomoran adalah urutan kemunculannya, misalnyaMerge: e4c54b3 4725ad2
git revert -m 1 SHA1
Perintah itu bekerja bagi saya untuk mengembalikan komit gabungan yang merupakan beberapa komit gabungan sebelum head dan memiliki banyak komit di bawahnya.
git reset --hard HEAD^
Gunakan perintah di atas untuk mengembalikan perubahan gabungan.
Jika Anda tidak ingin mengkomit, atau ingin mengkomit nanti (pesan komit akan tetap disiapkan untuk Anda, yang juga dapat Anda edit):
git revert -n <commit>