2016-11-10 60 views
0

考慮用下面的分支回購:合併犯下列爲未合併的分支差異

​​

development: A-B-C-D-E-F-G

當我運行git log master..development --oneline我收到以下:

C <hash> <commit message> 
D <hash> <commit message> 
E <hash> <commit message> 
F <hash> <commit message> 
G <hash> <commit message> 

所以即使C D E在兩個分支中,它們都被報告爲未合併。此外,當我試圖合併developmentmaster時,它將複製提交,一個提交原始提交哈希,另一個提交新提交哈希。

我已經繼承了存儲庫,我想知道如果我應該關心什麼可能會導致這樣的問題,以及最佳的行動方案是什麼。我需要將新提交F G合併到master中,我試圖找出儘可能保持乾淨的最佳方法。

在此先感謝

+0

對於這種情況,如果我沒有誤讀你的案例,它們必須是*不同*提交(通過ID)。試一下'git log --oneline --graph --decorate --left-right master ... development'(注意三點);可能會添加'--boundary'來獲得顯示的邊界提交。這應該有助於更準確地定義問題,至少。 – torek

回答

0

雖然我不能完全肯定,爲什麼發生這種情況的原因,我對如何合併分支,而無需創建這些重複提交的想法。

解決方法是使用git cherry-pick。 Cherry-pick會將特定的提交重放到當前分支的提示上,而不考慮提交歷史記錄,但只有在提交可以適用於新分支時纔會有效。(只要C D E的兩個版本都具有相同的更改。

首先,確保你對你的主分支從那裏,執行以下命令:。

$ git cherry-pick F G 

確保F和G是各自提交散列

如果這命令失敗,我願意打賭,C D E實際上不是相同的提交o兩個分支。

如果您希望我們調試爲什麼這可能發生,那將是張貼的git log master..development結果是非常有用的,因爲需要redacting的任何信息。