2009-08-18 16 views
32

Belgelerim Lateks kaynağımı izlemek için kullanıyorum. Master şubesini son kullanıcı sürümüne uygun belgelerle dolu tutmak istiyorum, bu yüzden birisi bir şeye ihtiyaç duyduğunda, ana şubeye geçebilir, belgeyi derleyebilir ve dağıtabilirim.Git: Otomatik olarak ana dosyaların üzerine yazılmayı seçerken otomatik olarak birleştirme için dal

Kılavuzun büyük bir güncelleştirmeye ihtiyacı olduğunda yeni şubeler yapıyorum. Ancak, elkitabı onaylandığında, master'a tekrar birleştirilmesi gerekir. Masteriçine dalgelen birleştirirken, ben, demek Git bazı komutu geçmek istiyoruz "sadece usta dosyayı üzerine yazmak dalı dosyayı kullanın birleştirilmesi unutur." Bunu yapmanın bir yolu var mı? Özellikle, her seferinde birleştirme aracını açmaktan kaçınmak istiyorum. Şimdiden teşekkürler. Eğer varsa master göz ardı etmek

+0

Sen interaktif birleştirme ve kaşık cevabım ... k-martinho-fernandes @ –

+1

ne yapacağını sorduğunda ne olursa olsun (yes' 'ile) beslemek yapabilirdi? –

cevap

46

, branch sonra teslim: 'Bilgisayar Dilbilimci' burada yorumladı

git merge master --strategy=ours 

http://schacon.github.com/git/git-merge.html

gibi bu " 'ana' her şeyi göz ardı eder, bu olsa bile yeni, bağımsız dosyalarda değişiklik yapar. Eğer OP değilseniz ve OP'nin “birleştirme unutma” dediği gibi daha güvenli bir birleşme istemiyorsanız, o zaman bu “Bilgisayar Dilini” 'nin bu mükemmel güvenli komutunu kullanın ve onun yorumunu alacak ve böylece kredi alacak.

git checkout branch 
git merge -s ours master 

Ama bu tam olarak ne istediğinizi yapmaz:

git merge -s recursive -X theirs branch 
+1

Buradan: http://stackoverflow.com/questions/366860/when-would-you-use-the-different-git-merge-strategies, diyor ki: Bizimki == Başka bir kafa çekmek istiyorum ama atmak Başın getirdiği tüm değişiklikleri uzaklaştırın. OP'nin istediği şeyin tam tersi. – Amala

+4

Şubede iseniz ve siz birleştirme ustası --strategy = bizimkine, o zaman şubenin değişikliklerini tutar. (OP'nin istediği) Ama eğer ustaysanız ve "bizim" i kullanırsanız, o zaman efendiyi korur. (tersi) – Robert

+4

Soruyu okuduğumdan, şubeye dalını birleştirmek için mika dalını birleştirmek istiyor, yani 'git birleştirme dalı' üstadı tutuyor, yani --strateji = bizimki istediği şeyin tam tersi –

1

Sana 'ours' birleştirme stratejisi ile yapabilirsiniz inanıyoruz o akım çalışma dalı içeriğini geçersiz branch ve istediğiniz içeriği master'a almaktır. Gerçekten istediğiniz şey, birleştirme stratejisi theirs, ve bunun için bir yol için size this similar question işaret ediyorum. Pratikte, kaynama noktası'u branch numaralı noktayı işaret edecek şekilde sıfırlar.

13

Git'in 1.7.1 sürümünde, dalın kendisini birleştirmek için "-Xtheirs" öğesini kullanabilirsiniz. Örneğin

, kendi ana dalında başlarsanız, Master'de

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git merge -Xtheirs editBranch

bu iş dolayısıyla esaslı this post sert kapalı reset editBranch yapmaktır yapmak gördüğüm bir başka yolu başlayan . Örneğin:

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git reset --hard editBranch

bu ikinci yolu daha iyi oyun olabileceğini düşünüyorum, ama ben henüz yeterince onunla etrafında oynama şansı olmadı. interaktif birleştirme komutu nedir:

+0

teşekkürler. Git'i evde güncellemeliyim ve buna bir göz at. Çok takdir edildi. – Mica