Belirli bir taahhüde kadar birleştir


372

Ben adında yeni bir şube oluşturulmuş newbranchgelen masterGIT'de dalı. Şimdi bazı işler yaptığını ve birleştirmek istediğiniz adres newbranchiçin master; ancak, bazı ekstra değişiklikler yaptım newbranchve newbranchsondan dördüncü sıraya kadar birleştirmek istiyorum master.

Kullandım cherry-pickama doğru seçenekleri kullanmak için mesajı gösteriyor:

git checkout master    
git cherry-pick ^^^^HEAD newbranch

mergeBunun yerine git'i kullanabilir miyim ?

git merge newbranch <commitid>

Yanıtlar:


592

Tabii ki, masterdalda olmak tek yapmanız gereken:

git merge <commit-id>

şubenize almak istediğiniz commit-idson taahhüdün karması nerede .newbranchmaster

Herhangi bir git komutu hakkında daha fazla bilgi edinebilirsiniz git help <command>. Bu durumda git help merge. Ve dokümanlar, mergekomut için son argümanın olduğunu söylüyorlar <commit>..., böylece herhangi bir taahhüde veya hatta birden fazla taahhütte referans verebilirsiniz. Yine de, ikincisini kendim yapmadım.


30
sadece tek bir taahhüt değil, önceki tüm taahhütlercommit-id
Dau

53
Evet, tüm kaydedilmesini birleştirme edeceğiz newbranchtarihçesi ayrıldığı zamandan beri masterkadar commit-idiçine masterdal. Şimdiki dalınızla git merge <commit-id>biten isimsiz bir dalı birleştirmeyi düşünebilirsiniz commit-id.
KL-7

2
Taahhüt kimliği kullanarak master dışındaki iki yerel şube arasında birleşebilir miyim?
skt

1
@skt, sadece kullanmadan önce birleştirmek istediğiniz yerel şubede olabilirsiniz git merge. yani şube b2'den şube b1'e 18a6fac taahhüdünü birleştirmek istediğinizi söyleyingit checkout b1; git merge 18a6fac
XioRcaL

1
Ben içine birleştirme istiyorum ve bazı diğer şube kaydedilmesini AB ve C ile orada s bir dal üzerinde isem bu iş görünmüyor ve bunu sadece C yapılan değişiklikleri değil, A ve B alır C birleştirme
ggb667

12

Dallanmayı temiz tutmak için şunları yapabilirsiniz:

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

Bu şekilde newbranch, master ile birleştirildiği yerde sona erecek ve newbranch2 üzerinde çalışmaya devam edeceksiniz.


1

Aşağıdaki komutu geçerli şube klasörüne birleştirmek için geçerli şube klasörüne çalıştırın <commit-id>, --no-commitotomatik olarak yeni bir taahhütte bulunmayın

git merge --no-commit <commit-id>

git merge --continue ancak birleşme çakışmalarla sonuçlandıktan sonra çalıştırılabilir.

git merge --abort Mevcut çatışma çözümleme sürecini iptal edin ve birleştirme öncesi durumunu yeniden yapılandırmaya çalışın.

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.