2016-08-01 40 views
0

我已經遇到了這種情況幾次,我很好奇別人怎麼處理這個。Git rebasing與乾淨的分支衝突以及如何處理它們?

比方說,我在遠程服務器上的兩個分支,看起來像這樣:

branchA: a123-->b123-->c123-->e123-->f123 

branchB: a123-->d123-->b123-->c123 

讓我們假設d123已於branchBb123c123之前提交。在某些時候,我們需要將branchA重新編號爲branchB,因爲它有branchB需要的工作。一位同事這樣做,清理衝突,一切正常,branchB被推回到遠程服務器。我的本地分行現在是乾淨的,看起來像以前看branchB

local branchB: a123-->d123-->b123-->c123 

當然,我需要重訂什麼是從branchB遠程服務器到我的地方branchB所以我的工作。有時候,我遇到了我在本地分支發生衝突的情況,git要求我仔細檢查每個分支,因爲分期通常是有效的。這是因爲我實際上並沒有從一個同事將branchA更改爲branchB的歷史記錄。

問題是,我知道我已完成的所有工作,直到此點位於遠程branchB並且沒有實際解決的衝突。通過其中每一個將是浪費時間。我只想要在遠程branchB上的歷史記錄取代我的本地歷史記錄。

在網上衝浪似乎有一些不同的解決方案,但我不確定哪一個是最好的,或者如果你願意的話,萊納斯會批准。我其實不確定我是否找到了我正在尋找的答案。

一些答案說,我應該使用rebase並使用theirs選項或選擇不同的策略。我相信有些答案認爲--skip在這裏是合適的......但看起來像git --skip從字面上看,在某些情況下跳過提交。此外,它看起來像使用theirs選項,如git rebase -X theirs實際上在某些情況下重寫了SHA,這些情況會拋出歷史,而這不是我想要的。

所以,我的問題是我會怎樣調和我的本地分支歷史與歷史上的遠程分支時:在我的本地分行

  • 一切都已經在遠程分支機構?
  • 我的分支是乾淨的,沒有掛起的變化,真的沒有任何衝突要解決?
  • 真的我想要的是將遠程分支歷史記錄中的內容替換爲本地分支歷史記錄中的內容?

回答

1

真的我要的是替換什麼在我的本地分支歷史有什麼遠程分支歷史

只是做一個硬復位:

git checkout branchB 
git fetch 
git reset --hard origin/branchB 
+0

這是一個有趣做法。有關如何做到這一點的任何建議否則? – Sethen