2012-06-22 35 views
4

我已經向主人提交了一些代碼,但實際上我必須在獨立的分支中執行該代碼。更糟糕的是,我推動了更改(更準確地說,做了svn dcommit,但這應該沒有什麼區別),並且有幾個人將我的更改推給了主人。這是主人的樣子現在:移動push git在其他人推送其更改後提交到其他分支

A (theirs) - B (mine) - C (mine) - D (mine) - E (theirs) 
               ↑ 
               master 

我想我提交移動到一個單獨的分支,使它看起來像這樣:

A (theirs) - E (theirs) 
|            ↑ 
|            master 
| 
+ - B (mine) - C (mine) - D (mine) 
          ↑ 
          newbranch 

有沒有辦法做到這一點?

回答

3

SVN永遠不會忘記。您只能用新的歷史記錄替換現有的「主幹」。我可以告訴如何使用SmartGit

我會建議你使用櫻桃挑選:在這種情況下,svn:mergeinfo將被正確翻譯。

  1. 我想你是主人,沒有本地變化。將主機重置爲A(本地 - >重置,找到A)。
  2. 現在您需要重新應用E.打開日誌,找到E - >右鍵單擊 - > cherry-pick(在對話框Cherry-pick & commit中)。
  3. 您現在可以推送主人來替換您的主幹:遠程 - >「推進」,選中「強制」複選框。
  4. 現在中繼線是正確的。創建一個分支「newbranch」並切換到它。
  5. 再次打開日誌,找到並選擇提交B,C,D - >右鍵單擊 - >櫻桃挑(Cherry-pick &再次提交)。
  6. 按下按鈕。在可能出現的對話框中選擇「推送爲新」。
相關問題