Git Birleştirmeyi İptal Et


120

Git'i VCS olarak kullanan bir proje üzerinde çalışıyorum. xyzMaster'ın ana hat şubesinden bir şube kestim. Bir süre çalıştıktan sonra kodumu işledim ve şube ana hattını çektim.

Çekiş iyiydi. Daha sonra kodu master ile birleştirdim. Birleştirmeden sonra bazı dosyalarda sorunlar oluştu. Birleştirmeden sonra kodu işlemedim. Birisi bu birleştirmeyi nasıl iptal edebilirim ve şu anda çalıştığım şubemi birleştirmeden önceki durumuna nasıl getirebilirim?



Şubenin önceki kaydını geri yükleyemez misin?
Wutipong Wongsakuldej


1
Git'te, önceki bir işlemedeki değişiklikleri geri alan yenirevert bir işlem oluşturan bir komutun adı olduğuna dikkat edin, bu nedenle muhtemelen burada aradığınız kelime bu değildir. Sorunuzu açıklığa kavuşturmak için düzenledim .
Scott Weldon

Yanıtlar:


300

taahhüt etmediğin sürece yazabilirsin

git merge --abort

tıpkı komut satırının önerdiği gibi.


4
Bunu denerken şu mesajı aldım: error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
SMBiggs

1
@Ahmad git, yerine getirilmemiş değişikliklerle (zaten izlenen dosyaların) bir birleştirme başlatmaz. git bilmediğini koruyamaz.
Timothy truckle

evet, kodumu kaybederek öğrendim. İşte benim sorunumun detayı, nasıl sorun yaşadığım. stackoverflow.com/questions/55474092/how-to-undo-the-git-abort
Ahmad

23

Birleştirme çakışması yaşarken "git durumu" yaparsanız, git'in size gösterdiği ilk şey, birleştirmeyi nasıl iptal edeceğinizdir.

Birleştirme çatışması yaşarken git durumunun çıktısı


Güzel, bu bana git reset HEAD <file>git uzantısı kaynak kontrolünden daraltılabilir "birleştirme" yi etkili bir şekilde kaldırmayı önerdi => sonra çakışmaları çözebilirim veya sadece GIT uzantı listesindeki değişikliklerimi geri alabilirim :)
jave.web

6

Doğruyu söylemek gerekirse, bunun nasıl yapılacağını açıklayan pek çok kaynak var zaten internette:

Git: Bir kesinleştirme nasıl tersine birleştirilir?

Git: Bir kesinleştirme nasıl tersine birleştirilir?

Undoing Merges , Git'in blogundan (archive.org'un Wayback Machine'den alınmıştır)

Sanırım bunlardan bazılarını özetleyeceğim:

  1. git revert <merge commit hash>
    Bu, bir birleştirmeyi geri aldığınızı söyleyen ekstra bir "geri dönüş" taahhüdü oluşturur

  2. git reset --hard <commit hash *before* the merge>
    Bu sıfırlama geçmişi, siz birleştirmeden öncesine. Birleştirmeden sonra taahhütleriniz varsa cherry-pick, daha sonra onlara ihtiyacınız olacak .

Ama dürüst olmak gerekirse buradaki bu kılavuz, diyagramlarla açıklayabileceğim her şeyden daha iyidir! :)


1
Bağlantı gitti. İç çekmek.
SMBiggs

@ScottBiggs Sanırım git-scm.com/book/en/v2/… . Denis, bunu okursan, kontrol edebilir misin? Ve gerçekten aynıysa, lütfen cevabınızdaki bağlantıyı güncelleyebilir misiniz? Teşekkür ederim!
Fabio,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.