SVN ile bir commit'i tersine birleştirmek kolaydır, ancak bunu Git ile nasıl yapabilirim?
SVN ile bir commit'i tersine birleştirmek kolaydır, ancak bunu Git ile nasıl yapabilirim?
Yanıtlar:
Geçmiş bir kaydetmenin değişikliklerini 'geri alan' yeni bir kaydetme oluşturmak için şunu kullanın:
$ git revert <commit>
Geçmişte keyfi bir noktadan bir commit'i yeniden oluşturarak ve sonra sıfırlayarak gerçekten kaldırmak da mümkündür, ancak taahhütlerinizi zaten başka bir depoya aktardıysanız (veya başka biri sizden çekmişse) bunu gerçekten yapmak istemezsiniz. .
-m <parent number>
seçenek sağlamanız gerekecektir git revert
. Yayınlanmamış bir geçmiş birleşimini geri almak istiyorsanız, kullanın git reset --hard HEAD^1
.
-m
, birleştirilmemiş daldan gelecekteki bir birleştirmenin bu birleştirmeden önceki değişiklikleri içermeyeceği anlamına geldiğini unutmayın ! Birleştirilmemiş bir dalı yeniden birleştirmenin uygun yolları için schacon.github.com/git/howto/revert-a-faulty-merge.txt adresine bakın .
Bir geri almak için birleştirme taahhüt, kullanmak gerekir: git revert -m <parent number>
. Örneğin, 1 numaralı ebeveyni kullanarak en son birleştirme işlemini geri döndürmek için şunu kullanırsınız:
git revert -m 1 HEAD
Son kaydetmeden önce bir birleştirme işlemini geri döndürmek için şunları yaparsınız:
git revert -m 1 HEAD^
git show <merge commit SHA1>
Ebeveynleri görmek için kullanın , numaralandırma göründükleri sıradır, ör.Merge: e4c54b3 4725ad2
git merge belgeleri: http://schacon.github.com/git/git-merge.html
git birleştirme tartışması (kafa karıştırıcı ama çok ayrıntılı): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git show <merge commit SHA1>
Ebeveynleri görmek için kullanın , numaralandırma göründükleri sıradır, örneğinMerge: e4c54b3 4725ad2
git revert -m 1 SHA1
Bu komut, baştan önce birkaç birleştirme taahhüdü olan ve altında birçok kaydetme olan bir birleştirme kesinleştirmesini geri döndürmem için çalıştı.
git reset --hard HEAD^
Birleştirme değişikliklerini geri almak için yukarıdaki komutu kullanın.
Taahhüt etmek istemezseniz veya daha sonra taahhüt etmek isterseniz (taahhüt mesajı yine de sizin için hazırlanacaktır ve bunu da düzenleyebilirsiniz):
git revert -n <commit>