2013-03-14 13 views
7

birleştirin, Aşağıdaki durum olması 'git --interactive rebase'Git rebase: şimdiye kadar olmayan müteakip onaylatabilirsiniz

kullanarak işlemek mesaj kaydedilmesini birleştirmek ve nasıl değiştirileceği güzel bir yol olduğunu biliyoruz:

yeniye CAC ve MİA commitA ve commitC ve commitB ve commitD taahhüt eder birleştiren

:

$ git rebase --interactive HEAD^^^^ 
pick 5b7c140 commitA 
pick 40ffd7c commitB 
pick 5e7647d commitC 
pick 78bea2d commitD 

Rebase [...] 

aşağıdaki gereksinimleri işlemek için bir olasılık var mı?

cevap

12

mümkündür - ayrıca interaktif rebase ile kaydedilmesini sırasını yeniden düzenleyebilirsiniz:

pick 5b7c140 commitA 
squash 5e7647d commitC 
pick 40ffd7c commitB 
squash 78bea2d commitD 

veya

pick 5b7c140 commitA 
fixup 5e7647d commitC 
pick 40ffd7c commitB 
fixup 78bea2d commitD 

ikisi arasındaki fark squash size taahhüt düzenlemek için izin vermesidir Yeni taahhütler için mesaj, fixup ise sadece birleşik taahhüt için yerine geçen pick taahhüt mesajını bırakarak ikinci taahhüt mesajını atar. (Eğer editörünüz yeterince hızlı başlatıyorsa, o zaman squash'u seçmenin alışkanlıklarına sahip olmanız, fixup taahhüdünün mesajının parçalarını kullanmanız gerekmeyebilse bile taahhüt mesajını gözden geçirmek için güzel bir fırsat verir.)

commitB ve commitC dosyalarınızın bir bölümünün aynı kısmını değiştirirse, çakışma yeniden oluşturma olasılığı vardır. Çoğu zaman bunlar kolayca sıralanabilir.

+1

Benim durumumda: Bu taahhütlerle ilgili çakışan dosya yok. Git sadece harika, taahhüt emrini tutmam gerektiğini düşündüm. Çok teşekkürler! :) –

+1

@John - 'git rebase -i' çok güçlü bir araçtır! – FooF

İlgili konular