2016-06-21 103 views
0

我的本地分支someNewFeature錯誤分歧。Git按順序合併發散分支

運行git狀態,表明這一點:

$ git status      
On branch someNewFeature 
Your branch and 'origin/someNewFeature' have diverged, 
and have 8 and 1 different commit each, respectively. 
    (use "git pull" to merge the remote branch into yours) 
nothing to commit, working directory clean 

的git的承諾樹爲當地的分支機構是這樣的:

* jjjjjjj commit 10 
* iiiiiii commit 9 
* hhhhhhh commit 8 
* ggggggg commit 7 
* fffffff commit 6 
* eeeeeee commit 5 
* ddddddd commit 4 
* ccccccc commit 3 
| * bbbbbbb Diverged commit 
|/ 
* aaaaaaa Base commit 

我想通過應用所有提交順序,以解決分歧,即它應該看起來像這樣:

* jjjjjjj commit 10 
* iiiiiii commit 9 
* hhhhhhh commit 8 
* ggggggg commit 7 
* fffffff commit 6 
* eeeeeee commit 5 
* ddddddd commit 4 
* ccccccc commit 3 
* bbbbbbb Diverged commit 
* aaaaaaa Base commit 

Bo nus:如果你能猜到我可能怎麼做到這一點,我會很感激你的洞察力。

+0

你確定提交通過引用'bbbbbbb'採用的是按時間排序的所有其他提交過嗎? – Makoto

+0

是的,我是。我今天早上做了這項工作。 – Morgoth

+0

在你做了一些修改(提交'dddd..jjjj')到你本地的'someNewFeature'分支之後,'cccc'是一個由'git pull origin/someNewFeature'產生的合併提交嗎? –

回答

1

您是否嘗試過一個簡單的git rebase someNewFeature origin/someNewFeature

+0

爲什麼downvote?這似乎達到了他們所描述的他們想要的,把所有提交放在原產地/ someNewFeature上「我想通過依次應用所有提交來解決分歧,即它應該看起來像這樣:」 – DavidN

+0

我沒有得到它也是。對我而言,這是一個基本問題和基本答案。我還計劃回答使用rebase :) – bhdrkn

1

如果你怕弄亂你的倉庫,而不是你的Git命令肯定,我建議GitUp對git倉庫工作。它通過可視化具有所有合併/重組功能。它還具有撤銷/重做功能,所以如果你搞砸了某些東西,你總是可以恢復原狀。你甚至可以重新訂購你的提交。

另外這裏是一個CLI的答案:據我所知,你有一個名爲someNewFeature的本地分支,你正在接近8個提交。但是在遠程分支上,其他開發人員會推動一些更改。你想要得到它們並重新應用你的變化。爲了做到這一點,你可以當你在你的someNewFeature分支運行此命令:

git pull --rebase origin someNewFeature