develop branch
--> dashboard (working branch)
Saya gunakan git merge --no-ff develop
untuk menggabungkan perubahan hulu ke dasbor
log git:
commit 88113a64a21bf8a51409ee2a1321442fd08db705
Merge: 981bc20 888a557
Author: XXXX <>
Date: Mon Jul 30 08:16:46 2012 -0500
Merge branch 'develop' into dashboard
commit 888a5572428a372f15a52106b8d74ff910493f01
Author: root <[email protected]>
Date: Sun Jul 29 10:49:21 2012 -0500
fixed end date edit display to have leading 0
commit 167ad941726c876349bfa445873bdcd475eb8cd8
Author: XXXX <>
Date: Sun Jul 29 09:13:24 2012 -0500
Penggabungan memiliki sekitar 50+ komitmen di dalamnya, dan saya bertanya-tanya bagaimana cara mengembalikan penggabungan sehingga dasbor kembali ke keadaan pra-penggabungan
Bagian kedua dari ini adalah, jika saya tidak bergabung dengan --no-ff
, saya tidak mendapatkan komit ' Cabang gabungan' berkembang 'menjadi dasbor ' .. Bagaimana saya akan mengembalikan gabungan itu?
Jawaban:
Mengembalikan komit gabungan telah dibahas secara mendalam dalam pertanyaan lain. Saat Anda melakukan penggabungan maju-cepat, yang kedua Anda gambarkan, Anda bisa gunakan
git reset
untuk kembali ke status sebelumnya:Anda dapat menemukan
<commit_before_merge>
dengangit reflog
,,git log
atau, jika Anda merasakan mokinya (dan belum melakukan hal lain):git reset --hard HEAD@{1}
sumber
reflog
penyelamat.HEAD@{1}
hanya menggambarkan status HEAD terbaru kedua, atau lebih teknis: "Ref diikuti oleh akhiran @ dengan spesifikasi ordinal yang terlampir dalam pasangan kurung (misalnya {1}, {15}) menentukan nilai ke-n sebelumnya dari nilai tersebut. ref. "Dari sini:
http://www.christianengvall.se/undo-pushed-merge-git/
Git revert menambahkan komit baru yang mengembalikan komit yang ditentukan.
Menggunakan -m 1 memberi tahu bahwa ini adalah penggabungan dan kami ingin mengembalikan komit induk pada cabang master. Anda akan menggunakan -m 2 untuk menentukan cabang pengembangan.
sumber
here
tautan dalam komentar @Hilikus tidak lagi valid. Situs mengklaim konten dipindahkan ke buku ( git-scm.com/book/en/v2 ) tetapi jika demikian, itu tidak mudah untuk ditemukan di sana.Setel ulang komit gabungan dengan
git reset --hard HEAD^
.Jika Anda menggunakan --no-ff git selalu membuat penggabungan, bahkan jika Anda tidak melakukan apa pun di antaranya. Tanpa --no-ff git hanya akan melakukan fast forward, artinya cabang KEPALA Anda akan disetel ke KEPALA cabang gabungan. Untuk mengatasinya, temukan commit-id yang ingin Anda kembalikan ke dan
git reset --hard $COMMITID
.sumber
Tetapi mungkin memiliki efek samping yang tidak terduga. Lihat
--mainline parent-number
opsi di git-scm.com/docs/git-revertMungkin cara yang kasar tetapi efektif adalah dengan memeriksa induk kiri dari komit itu, membuat salinan semua file, checkout
HEAD
lagi, dan mengganti semua konten dengan file lama. Maka git akan memberi tahu Anda apa yang sedang diputar kembali dan Anda membuat komit revert Anda sendiri :)!sumber
Reverting a merge commit declares that you will never want the tree changes brought in by the merge. As a result, later merges will only bring in tree changes introduced by commits that are not ancestors of the previously reverted merge. This may or may not be what you want.
git reset
adalah solusinya, tetapi juga menyebutkan bahwa itu mungkin memiliki efek samping yang tidak terduga. Namun, tautan itu darigit revert
, bukangit reset
:)git revert
tidakgit reset
Jika Anda menggabungkan cabang, lalu mengembalikan gabungan menggunakan permintaan tarik dan menggabungkan permintaan tarik itu untuk mengembalikan.
Cara termudah yang saya rasakan adalah:
git revert -m 1 xxxxxx
(jika kembalikan digabung menggunakan cabang) atau gunakangit revert xxxxxx
jika itu kembalikan sederhanasumber