2012-06-19 318 views
4

我很抱歉,如果這已被徹底,明確和多次回答,因爲它可能已經有;但是我至少搜索了一週後一直無法找到關於這個特定問題的信息。Git:合併多個分支

爲了簡化我們有3個人在一個項目上工作,每個人都有自己的分支,我們經常會合並回主幹線。問題是,我們要麼發生衝突(試圖挑選櫻桃),要麼就好像覆蓋了主文件的所有文件以及與最後一個合併的前兩個分支,實際上沒有任何合併,只是覆蓋。

我的問題是(希望)簡單地說:

主幹線

string test1; 
string test2; 
string test3; 

test1的分支

string test1 = "Dan Branch merged"; 
string test2; 
string test3; 

test2的分支

string test1; 
string test2 = "Dave Branch merged"; 
string test3; 

TEST3分支

string test1; 
string test2; 
string test3 = "Will Branch merged"; 

所需的輸出時,所有的3個分支合併:

string test1 = "Dan Branch merged"; 
string test2 = "Dave Branch merged"; 
string test3 = "Will Branch merged"; 

我真正得到的時候我嘗試合併測試1和2:

自動合併失敗;修復衝突,然後提交結果。

<<<<<<< HEAD 
+  String test1 = "Dan Branch merged"; 
+  String test2; 
+  String test3; 
    ======= 
+   String test1; 
+   String test2 = "Dave Branch merged."; 
+   String test3; 
    >>>>>>> test2 

我目前使用Windows上的git貴(與改變的慶典/殼/ CLI時,我終於得到了我周圍的git頭的計劃),所以如果可能的話,將會是很大的如果有任何答案是專門爲git-gui提供的,但當然乞丐不能是選擇器。

試圖讓事情變得簡單,存儲庫位於本地網絡文件夾,而不是任何服務器。我不知道這是否會影響實現(我想如果我正確地猜測了它們的使用,推拉將不會被使用)

當前Git已被降級爲只是一種存儲和瀏覽舊版本的方法因爲所有的合併都是通過手工完成的。

+0

你是否挑選櫻桃,因爲3個貢獻者不會合並他們在主人提交的所有提交,還是因爲你不知道任何替代它? –

+0

@ChristophEberhardt我不知道任何替代品。我們都在規定的時間內工作,在這段時間內,我們都會獲得當前的主幹線,並在其中的不同部分工作。 如果我們試圖將它們全部重新合併到master trunk中,它似乎只是用合併分支覆蓋合併分支。 – Daemeous

+0

將分支合併到master後,您是否在解決衝突後提交? –

回答

1

處理代碼的方式可能不是處理分佈式開發的常規方法。我建議(如果進入主幹線,是發展過程中可用)下面的步驟,使這項工作:

git stash  (to put your changes away for the moment) 
git pull  (to get the latest commits) 
git stash pop (to get back, what was stashed away in the first step) 

然後解決您的矛盾。這應該不像合併整個分支時那麼多。然後:

git commit 
git push 

重要:避免改變對主分支和工作。分支機構更常用於並行開發事物,而不是每天都承諾掌握。例如。當開始一個新的主要版本的軟件時,它會改變很多舊的代碼或API,所以你不能簡單地將它們推送給主,因爲提交會使整個軟件包不穩定。

編輯:

要honorate大衛的評論:這是在使用的Git分支沒有壞處,但我有一個或兩個情況下,如果unproperly處理分支導致混亂,是一個沒有經驗的Git用戶都很難到理解和解決。但是,那些處理錯誤不應該是平常的。

編輯:

事實證明你確實只有一個產品總數本地倉庫。在我看來,你首先需要一個LAN存儲庫。所以如果你不改變你的基礎設施(我不推薦它,另一種方案是http://bitbucket.org,並且每個人在他的電腦上都有自己的倉庫克隆),那麼我認爲在擁有三個分支的時候沒有其他辦法。我強烈建議你,你讀了一個像http://www.vogella.com/articles/Git/article.html這樣的git教程,以改變你的基礎設施。祝你好運。

+0

分支在Git中很便宜。無論如何,如果將它們全部合併回主,分支有什麼危害? –

+0

@ChristophEberhardt感謝您的時間和幫助。我們使用本地網絡文件夾來保持簡單(我在第一次評論前不久通過編輯補充說,所以您可能會閱讀舊版本)。我假設這些是爲了如果你有一個服務器設置。如果我是對的,你可以請指導一下什麼是有效的本地設置?再一次,謝謝你。 – Daemeous

+0

@Daemeous我可以以任何其他方式幫助你嗎? –