2009-09-09 26 views
98

我開始研究我認爲是我的主分支上的小錯誤修復。然而,它已經失去了控制,我希望自己創建了一個獨立的分支機構來完成開發工作。在當前分支上進行所有更改並將它們移動到Git中的新分支中

所以現在我希望做的是:

  1. 創建一個名爲(說)「邊緣」的新分支
  2. 前進主所有的改變/未跟蹤文件到邊(這樣主人是當我開始bug修復)
  3. 完成我的工作的優勢,合併到主

我怎樣才能做到這一點不變?

回答

93

如果你還沒有提交任何東西,你已經處於正確的位置。

  1. 創建一個新的分支:git checkout -b edge
  2. 您的文件並沒有改變。只需git add什麼需要和承諾照常。
  3. 當您完成對edge的承諾後,請切換回mastergit checkoutgit merge edge
+0

沒有犯下任何事情,讓第一線是一個可喜的景象......唷,這實際上是相當痛苦:-) – Ryan 2017-12-11 15:52:01

86

要添加到JB的答案,如果你有已經開始就掌握幾個提交什麼結束了作爲一個「邊緣」的努力,您可以:

git stash 
git checkout -b edge master 
git branch -f master SHA1_before_your_commits 
git stash apply 
+0

藏匿包裝並非絕對必要,但僅僅針對未經授權的工作更改是正確的? – HaveAGuess 2011-10-22 15:28:27

+4

@HaveAGuess正確。通過「採取我所有的變化」,我還包括了當前尚未添加的變更。因此,藏匿。 – VonC 2011-10-22 16:11:02

+1

謝謝(表決) – HaveAGuess 2011-11-07 11:55:29

13

如果您正試圖將工作從主機移動到已存在的分支,但在主機後面,git不會讓您切換到其他分支。在這種情況下,這樣做:

git stash 
git checkout oldBranch 
git merge master 
git checkout master 
git stash apply 
git checkout oldBranch 
相關問題