2009-01-08 8 views
18

git svn clone ile oluşturulan bir yerel git deposu var. Yerel bir şube yapıyorum, bazı değişiklikler yapıp, master'a geri dönüyorum, git svn rebase ve her şey yolunda giderse, şubemi tekrar ustalıkla birleştiriyorum.Git svn dcommit neden yerel şubeler için birleşme taahhütlerinin tarihini kaybediyor?

alt text http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

Bazen

, daha sonra tekrar git svn rebase ve bazı uzak değişiklikleri almak, bu a_branch ana hat birleştirilecek olması gerçeği kaybeder ve ağaç gibidir::

Sonra ağaç şuna benzer

alt text http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

Neden? Onu durdurabilir miyim? Bir dalın birleştirildiğini söylemenin kolay bir yolu var mı, yoksa işim bittiğinde dallarımı silmeli mi? Bu yüzden neyin birleştirildiğini ve birleştirilmediğini unutmam.

cevap

22

Git-svn man sayfası, birleştirme kullanmamanızı önerir. Bu bir yan etkisidir. Şubeyi rebasing yaptığınızdan (git svn rebase biraz "git pull --rebase" gibi) etkili bir şekilde geçmişi yeniden yazar. Birleştirme gibi halihazırda alt sürümde bulunan herhangi bir yerel yüklemeyi atabilir ve yalnızca svn deposunda gerçekten var olan işleri saklayabilir. Yerel bir şubenin önemsiz bir birleşme taahhüdünün SVN'de bir karşılığı bulunmadığından, sadece "gerçek" değişiklikleri gerçekleştirirsiniz, bu nedenle bunlar yeni rebased ana dalınızda görülen tek değişikliklerdir.

İdeal olarak yerel şubeniz yalnızca hızlı ileri sarmalı, yani birleştirme işlemi oluşturulmamalıdır. Eğer durum böyle değilse, o zaman yerel şubenizi birleştirme yerine ustalıkla yeniden düşünmeyi düşünmelisiniz. Bu tamamen birleştirme işlemini oluşturmayı önler. Git rebase master için

+1

+1 – JoaoHornburg

0

Çünkü svn'den geçiyorsunuz. Bunu yaptığınızda çok fazla bilgi kaybedersiniz (örneğin yazarınızı da kaybedersiniz).

İlgili konular