2009-09-09 53 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 
相关问题