2011-06-17 23 views
5

İki sütun olduğunu varsayalım, master ve slave, ve aynı dosyayı ve aynı satırı düzenlerler. şube slave oGit'te birleştirme sonrasında yama yeniden nasıl biçimlendirilir?

foo bar baz 

olmaya düzenlendiğinde Başlangıçta, dosyanın içeriğini

foo bar 

daha sonra Şimdi şube slave kullanıcı yama (git format-patch master) biçimlendirir ve kullanıcıya gönderir Şubenin master. Aynı zamanda, şube master aynı dosya düzenlenebilir ve yama uygulanamaz

foo bar spam eggs 

olur ve master birleştirme ve yeni bir yama yapmak için slave sorar edilir. master, slave'a eklendiğinde ve çakışma çözüldüğünde, düzeltme ekinin yeniden biçimlendirilme zamanı. taahhüt grafiği aşağıdaki gibidir:

slave:    master: 

foo bar baz spam eggs 
    |    \ 
    |    \ 
    |    foo bar spam eggs 
    |     | 
foo bar baz    | 
     \     | 
     \    | 
     +--------- foo bar 

son işlemek gibi slave üzerinde (birleştirme) görünür: şimdi git format-patch master çalıştırırsanız

@@@ -1,1 -1,1 +1,1 @@@ 
- foo bar baz 
-foo bar spam eggs 
++foo bar baz spam eggs 

Ancak, yine eskisi gibi aynı yamayı olsun, Bu, birleştirme ve çakışma çözümünü dikkate almaz:

@@ -1 +1 @@ 
-foo bar 
+foo bar baz 

En son master'a karşı uygulanacak bir düzeltme ekini nasıl biçimlendirirsiniz? rebase olmadan yapmak istiyorum.

Güncelleme

: rev1 ve rev2 master ve custom şube başkanları sırasıyla git format rev1..rev2, çatışma çözümü ile ilgili değişiklikleri içermemektedir. git-diff geçerli bir yamayu biçimlendirir, ancak iletileri atar.

cevap

1

Niçin yamalar kullanıyorsunuz? Repolar arasında itmeli ve çekiyor olmalısınız.

Birleştirme, yama ekleyebileceğiniz bir şey değil. Sadece ilk ebeveyni takip edecek. git diff'u kullanarak istediğinizi elde edebilir ve aralarında ayrım yapmak için 2 farklı işi belirlerken yama için biçimlendirmeyi kullanabilirsiniz.

Bu yardımcı olur umarım.

+0

Yamaları kullanırım, çünkü bu, akış yukarı istediği şeydir ve iş akışının denetiminde değilim. Uyuşmazlık çözümünü dikkate alan yamaları biçimlendirmeliyim, çünkü repo'umu da yayınladım ve yeniden yapılamam. 'git diff', maalesef taahhüt mesajları içermiyor. – sastanin

+0

Birleştirme işleminin yalnızca bir ebeveyne sahip olmasının bir yolu var. Bundan bir yama size ihtiyacınız olan sonucu verecektir. –

+0

Sadece bir ebeveyn ile birleştirme? Bu nasıl mümkün olaiblir? "Git-merge", "_two_ veya daha fazla geliştirme geçmişini bir araya getirme" durumunda mı? – sastanin

İlgili konular