2017-01-22 94 views
3

我正在學習使用Git,但是,我想保留線性尋找歷史。我剛剛完成了我的第一個功能分支正確合併功能分支使用TortoiseGit

我現在準備將它合併到我的主分支中。

我知道正確的方法是重新綁定特性分支或其他東西,然後合併它?無論哪種方式,都有一些合併過程,以便您保留提交歷史記錄或其他內容。

我的主分公司叫做主人。該功能分支被稱爲import-publictalk-names

發現這樣一個問題:

Merging code branch to master using tortoisegit

所以我覺得我已經成功地做是正確的,這可以被關閉:

Merge Results

我想我已經成功地做到了現在按我的喜好:

Merge results

+1

您的歷史不是線性外觀。看到「刪除的MWB文件...」的提交 – MrTux

+0

@MrTux我做了一個有關gitIgnore的衝突。這似乎與你強調的那個有關。我可以修復嗎? –

回答

3

當你創建一個新的分支時,你基本上可以並行工作。但是,無論何時合併(如https://stackoverflow.com/a/38203822/3906760中所述),功能分支中的所有更改都將集成到當前分支中。在這一點上,你有一個同步點,以某種方式將你的改變放到你當前分支(主)的歷史記錄中。 - 爲了防止在兩個分支上編輯文件,可能會有衝突,需要在額外提交完成合並之前將其解除。

如果您的master分支沒有額外的提交(參見圖1),則正常的合併將導致直線不能從主分支上的任何提交(主分支標籤將被分配給功能分支提交,參見圖2)。如果你想在日誌中看到一條平行的線,並且這條線通過合併提交(一個提交有兩個父代而不是一個,參見圖3)光學合併到主分支中,則需要啓用「No fast forward 「合併選項。 - 如果主分支上有並行提交,您將始終得到合併提交(除非您選擇「僅快進」)。 - 就像一個邊節點:圖片2和3中的所有文件都有相同的內容,唯一的區別在於git中的元數據。

此外,還有一些人不喜歡這種提交在視覺上被交錯的截圖。從git的角度來看,正常的合併非常好。但是,如果您想要提交一系列的提交,則需要在要合併您的更改的分支之上重新分配功能分支(然後以圖片1爲例)。之後,合併重組分支(作爲快速合併或非快速合併)。


爲了使你的歷史線性的「只是」通過重置主上次提交(平行之一,參見圖4)與「硬重置」恢復合併。然後簽出你的特性分支,並將它重新綁定到主控制器上(點擊日誌對話框中的主分支,然後點擊「Rebase ... on this ...」),然後你有圖1的情況,你可以再次合併。


圖片1.在reorder-commits分公司沒有簡單的平行發展承諾在master

enter image description here

圖片2.合併reorder-commitsmaster使用默認選項(即快進合併) :

enter image description here

圖片3.合併reorder-commitsmaster與「非快進」的選項,注意合併與提交「合併分支......」消息,兩家母公司承諾:

enter image description here

圖片4.進行歷史線性的,通過「復原」你的分支(硬)將master分支重新設置到它的舊位置。

enter image description here

+0

我在合併時勾選了「沒有快進」的框。我也明白你所說的不是線性的,因爲這個提交。我能解決這個問題嗎? –

+0

感謝您的屏幕截圖。我不介意顯示紅色分支,因爲對我來說它表示分支與之相關的提交。但我想刪除您提出的其他提交。 –

+1

只是爲了說明這一點:你現在的歷史非常好。爲了「修復」它,「只是」通過將主設備重置爲最後提交(並行設備)並進行「硬重置」來恢復合併。然後簽出您的功能分支並將其重新綁定到主設備上。然後你有圖1的情況並再次合併。 – MrTux