Git怎样撤销一次分支的合并Merge
伊谢尔伦
伊谢尔伦 2017-04-21 11:16:49
0
6
864

合并分支后,发现合并错了分支。
master上还没有提交任何东西,想取消这次合并,让分支回到位,肿么办?

好在现在还没commit另外的内容,如果不小心commit了,那又该怎么办啊?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(6)
黄舟

Sungguh pelik alat pengurusan git Terdapat banyak penjelasan untuk masalah, dan anda tidak dapat mengetahui yang mana satu yang betul sepintas lalu.
http://git-scm.com/blog/2010/03/02/undoing-merges.html Ini jawapan rasmi saya akan terjemahkannya di sini selepas saya selesai membacanya.

===================== Terjemahan mudah bermula =====================

Oleh kerana terlalu ramai orang bertanya cara untuk membuat asal cantuman, git secara rasmi mengeluarkan tutorial ini untuk menunjukkan cara mencapai matlamat untuk membatalkan cantuman di bawah sistem ideologi sedia ada git.

Kaedah 1, tetapkan semula kepada versi sebelum bergabung, dan kemudian buat semula operasi seterusnya Setiap kolaborator dikehendaki mengetahui cara untuk melancarkan HEAD setempat:

$ git checkout 【行merge操作时所在的分支】
$ git reset --hard 【merge前的版本号】

Kaedah 2, apabila terdapat operasi dan perubahan lain selepas gabungan, git juga mempunyai cara untuk membatalkan gabungan, gunakan git revert:

$ git revert -m 【要撤销的那条merge线的编号,从1开始计算(怎么看哪条线是几啊?)】 【merge前的版本号】
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
 1 files changed, 0 insertions(+), 2 deletions(-)

Ini akan membuat komitmen baharu untuk mengimbangi operasi gabungan yang sepadan, dan kemudian git merge [cawangan yang diwakili oleh nombor itu] akan menggesa:

Already up-to-date.

Kerana menggunakan kaedah 2 akan membuat git tersalah anggap bahawa perkara dalam cawangan ini adalah perkara yang kita tidak mahu.

Kaedah tiga , cara membatalkan kaedah dua:

$ git revert 【方法二撤销merge时提交的commit的版本号,这里是88edd6d】
Finished one revert.
[master 268e243] Revert "Revert "Merge branch 'jk/post-checkout'""
 1 files changed, 2 insertions(+), 0 deletions(-)

Itu sahaja, anda boleh bergabung seperti biasa, tetapi mungkin terdapat banyak konflik! !

$ git merge jk/post-checkout
Auto-merging test.txt
Merge made by recursive.
 test.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

===================================Tamat terjemahan mudah =======

Pada akhirnya, saya masih merasakan bahawa yang teratas terlalu menyusahkan. Bagi mereka yang menggunakan WebStorm untuk menulis kod di bahagian hadapan setiap hari, lihat: WebStorm Klik kanan fail atau folder projek, dan terdapat:

Sejarah Tempatan -> Papar Sejarah

Selepas mengkliknya, tetingkap akan muncul di mana anda boleh melihat semua perubahan setempat. Cari yang betul dan tekan yang di sudut kiri atas:

Berbalik

Butang

, iaitu anak panah kecil melengkung berwarna ungu, kembali ke belakang. Ia sangat berguna apabila saiz fail tidak besar dan sangat disyorkan.

伊谢尔伦

Jika anda pasti akan meninggalkan komit gabungan ini, jika anda menggabungkan cawangan yang salah untuk dikuasai, mula-mula gunakan git reflog atau gitg, gitk, qgit dan alatan lain untuk menentukan komit di mana induk berada sebelum anda digabungkan, dan kemudian gunakannya pada cawangan induk git reset --hard <commit> Tetapkan semula penuding kepala. Secara umumnya, melaksanakan git reset --hard HEAD~ terus pada induk juga boleh kembali ke komit sebelum digabungkan, tetapi lebih baik menggunakan komit yang disahkan untuk perintah git reset --hard. Ambil perhatian bahawa perintah git reset --hard adalah berisiko Melainkan anda sangat pasti bahawa anda ingin meninggalkan penyerahan semasa, sebaiknya git branch membuat rujukan cawangan baharu untuk penyerahan semasa sebelum meneruskannya selepas mengesahkan bahawa ia adalah betul.

Jika terdapat komit baharu selepas cantuman yang salah, anda boleh menggunakan git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支> untuk membina semula komit baharu pada komit gabungan yang betul selepas melengkapkan cantuman betul yang disebutkan di atas. Urutan komit yang dibina semula oleh perintah git rebase --onto adalah linear terbaik, jika tidak, komit bukan linear akan menjadi linear. Jika anda perlu menyimpan sejarah penyerahan bukan linear, anda boleh mempertimbangkan untuk menggunakan parameter --preserve-merges, tetapi hasilnya sangat tidak boleh dipercayai, bergantung pada tahap ketidaklinearan penyerahan.

PHPzhong

B-R-A-N-C-H
/ --Gabung
M-A-S-T-E-R----M

Anda boleh menggunakan git reset --nilai hash R keras dan kembali ke R. Kembali dari M selepas Gabung ke R.

小葫芦

Saya rasa git merge --abort diperlukan di sini

伊谢尔伦

Jika anda menghadapi konflik semasa penggabungan dan ingin membatalkan operasi dan memulihkan indeks, gunakan git merge --abort
git reset --hard boleh kembali ke komit tertentu
git revert boleh membuat asal komit, dan membuat asal akan menghasilkan komit baharu

Git rebase belum dikaji dengan teliti.

巴扎黑

http://opensource.apple.com/source/Git/Git-26/src/git-htmldocs/howto/revert-a-faulty-merge.txt

Siapa yang mempunyai masa untuk menterjemahkannya?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan