Dosyaları bir şubeden başka bir şubeye seçici olarak birleştirmek için,
git merge --no-ff --no-commit branchX
branchXgeçerli şubeyle birleştirmek istediğiniz dal nerede .
Bu --no-commitseçenek Git tarafından birleştirilen dosyaları gerçekte işlemeden yerleştirir. Bu, birleştirilen dosyaları istediğiniz gibi değiştirme ve daha sonra bunları kendiniz yapma fırsatı verecektir.
Dosyaları nasıl birleştirmek istediğinize bağlı olarak, dört durum vardır:
1) Gerçek bir birleşme istiyorsun.
Bu durumda, birleştirilmiş dosyaları Git'in otomatik olarak birleştirme biçimini kabul edersiniz ve sonra bunları taahhüt edersiniz.
2) Birleştirmek istemediğiniz bazı dosyalar var.
Örneğin, sürümü geçerli dalda tutmak ve birleştirdiğiniz daldaki sürümü yok saymak istersiniz.
Geçerli daldaki sürümü seçmek için şunu çalıştırın:
git checkout HEAD file1
Bu işlem file1, geçerli daldaki sürümünü alır ve file1Git tarafından otomatikleştirilenin üzerine yazar .
3) BranchX sürümü (ve gerçek bir birleştirme değil) istiyorsanız.
Çalıştırmak:
git checkout branchX file1
Bu sürümünü alır file1içinde branchXve üzerine yazma file1Git tarafından otomatik olarak birleşti.
4) Son durum, içinde yalnızca belirli birleştirme seçmek istiyorsanız file1.
Bu durumda, değiştirilmiş file1olanı doğrudan düzenleyebilir , sürümünün olmasını istediğiniz her şeye güncelleyebilir file1ve sonra taahhütte bulunabilirsiniz.
Git bir dosyayı otomatik olarak birleştiremezse , dosyayı " birleştirilmemiş " olarak bildirir ve çakışmaları manuel olarak çözmeniz gereken bir kopya oluşturur.
Bir örnekle daha ayrıntılı açıklamak için, diyelim ki branchXmevcut dalla birleştirmek istiyorsunuz :
git merge --no-ff --no-commit branchX
Daha sonra git statusdeğiştirilen dosyaların durumunu görüntülemek için komutu çalıştırın .
Örneğin:
git status
# On branch master
# Changes to be committed:
#
# modified: file1
# modified: file2
# modified: file3
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: file4
#
Nerede file1,, file2ve file3git dosyaları başarıyla otomatik olarak birleştirildi.
Bunun anlamı, bu üç dosyadaki masterve branchXtüm dosyalardaki değişikliklerin herhangi bir çakışma olmadan bir araya getirilmesidir.
Birleştirmenin nasıl yapıldığını git diff --cached;
git diff --cached file1
git diff --cached file2
git diff --cached file3
İstenmeyen birleşme bulursanız,
- dosyayı doğrudan düzenle
- kayıt etmek
git commit
file1Sürümü birleştirmek istemiyorsanız ve sürümü geçerli dalda tutmak istiyorsanız
Çalıştırmak
git checkout HEAD file1
Birleştirmek file2istemiyorsanız ve yalnızca sürümübranchX
Çalıştırmak
git checkout branchX file2
file3Otomatik olarak birleştirilmek istiyorsanız , hiçbir şey yapmayın.
Git zaten bu noktada birleştirdi.
file4Yukarıdaki Git tarafından başarısız bir birleştirme. Bu, her iki dalda da aynı satırda meydana gelen değişiklikler olduğu anlamına gelir. Bu, çakışmaları manuel olarak çözmeniz gereken yerdir. Dosyayı doğrudan düzenleyerek veya olmak istediğiniz daldaki sürümün ödeme komutunu çalıştırarak yapılan birleştirmeyi atabilirsiniz file4.
Son olarak, unutmayın git commit.