Dosyaları bir şubeden başka bir şubeye seçici olarak birleştirmek için,
git merge --no-ff --no-commit branchX
branchX
geçerli şubeyle birleştirmek istediğiniz dal nerede .
Bu --no-commit
seç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 file1
Git 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 file1
içinde branchX
ve üzerine yazma file1
Git 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ş file1
olanı doğrudan düzenleyebilir , sürümünün olmasını istediğiniz her şeye güncelleyebilir file1
ve 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 branchX
mevcut dalla birleştirmek istiyorsunuz :
git merge --no-ff --no-commit branchX
Daha sonra git status
değ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
,, file2
ve file3
git dosyaları başarıyla otomatik olarak birleştirildi.
Bunun anlamı, bu üç dosyadaki master
ve branchX
tü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
file1
Sü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 file2
istemiyorsanız ve yalnızca sürümübranchX
Çalıştırmak
git checkout branchX file2
file3
Otomatik olarak birleştirilmek istiyorsanız , hiçbir şey yapmayın.
Git zaten bu noktada birleştirdi.
file4
Yukarı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
.