2011-07-01 74 views
3

我在主分支中做了三次提交:C1,C2和C3。 從那時起,我做了一個新的分支'Branch1'。有一些 發生了變化,並讓它們在Branch1上的C4中提交。Git:如何從master分支中的更早/更早的提交中創建新的分支?

事情看起來如下:

C1--C2--C3<--Master 
     \  
      C4<--Branch1  

不過,現在我想用一個較早提交的法師 叉掉一個新的分支「Branch2的」。即在主分支中, 我想回到C2的時間,並在 的新分支上構建。主分支不得以任何方式受到干擾。 C5是一項提交保存在新的'Branch2'中完成的更改。 圖形,如下圖應該解釋什麼,我想:

 C5<--Branch2 
    /
C1--C2--C3<--Master 
     \  
      C4<--Branch1  
  1. 什麼混帳命令序列(S)將帶我去嗎?

  2. 我的第二個問題是,在第二個 圖中達到了案例後,如果執行'恢復'以刪除Master分支中的C3, 它對Branch1會有什麼影響?分支1中的代碼是否會變爲 損壞或不穩定?

回答

8

簡單地檢查出提交併指定一個分支創建:

git checkout -b Branch2 C2 

關於第二個問題,這取決於你如何定義「恢復」(git revertgit reset)。在兩種情況下,Branch1仍然包含提交C3(記住,在git分支中只是'指針',祖先信息存儲在提交本身中)。

+0

謝謝澄清! –

相關問題