Anladığım kadarıyla, diyagramlar ve sonuçlar yanlış olduğu için bu cevap revize edildi.
git pull
git birleştiği için birleştirme işlemlerine neden olur. Bu, şubelerinizi birleştirme yerine yeniden taban kullanacak şekilde ayarlayarak değiştirilebilir. Bir çekmede birleştirme yerine yeniden taban kullanmak, paylaşılan havuza daha doğrusal bir geçmiş sağlar. Öte yandan, birleştirme taahhütleri şubedeki paralel gelişim çabalarını göstermektedir.
Örneğin aynı şubede iki kişi çalışıyor. Şube şu şekilde başlar:
...->C1
Birinci kişi işini bitirir ve şubeye iter:
...->C1->C2
İkinci kişi işini bitirir ve zorlamak ister, ancak güncelleme yapmaları gerektiği için yapamaz. İkinci kişi için yerel veri havuzu şöyle görünür:
...->C1->C3
Çekme birleştirilecek şekilde ayarlanmışsa, ikinci kişilerin deposu gibi görünecektir.
...->C1->C3->M1
\ /
->C2->
M1 bir birleştirme taahhüdüdür. Bu yeni şube geçmişi depoya aktarılacaktır. Bunun yerine, çekme yerel repo şöyle görünecektir:
...->C1->C2->C3
Birleştirme taahhüdü yoktur. Tarih daha doğrusal hale getirildi.
Her iki seçenek de şubenin tarihini yansıtır. git, hangi geçmişi tercih ettiğinizi seçmenize izin verir.
Rebase'in uzak şubelerde soruna neden olabileceği yerler var. Bu, o davalardan biri değil. Zaten karmaşık olan bir şube geçmişini basitleştirdiği ve paylaşılan depoya göre geçmişin bir sürümünü gösterdiği için yeniden taban kullanmayı tercih ediyoruz.
Branch.autosetuprebase = her zaman git'in uzak şubelerinizi ana yerine yeniden temel olarak otomatik olarak kurmasını sağlayabilirsiniz.
git config --global branch.autosetuprebase always
Bu ayar git'in her uzak dal için otomatik olarak bir yapılandırma ayarı oluşturmasına neden olur:
branch.<branchname>.rebase=true
Bunu, zaten kurulmuş olan uzak şubeleriniz için kendiniz ayarlayabilirsiniz.
git config branch.<branchname>.rebase true
@LaurensHolst'a önceki ifadelerimi sorgulayıp takip ettiği için teşekkür ederim. Git'in çekme ve birleştirme işlemleriyle nasıl çalıştığı hakkında kesinlikle daha fazla şey öğrendim.
Birleştirme taahhütleri hakkında daha fazla bilgi için , ProGit-Book'ta Bir Projeye Katkıda Bulunma bölümünü okuyabilirsiniz . Özel Küçük Takım bölüm gösterileri kaydedilmesini birleştirme.
git log --no-merges