【发布时间】:2013-03-20 14:15:16
【问题描述】:
我开始着手对我的主分支上的一个小错误进行修复。然而,它已经失控到我希望我首先创建一个单独的分支来进行开发的地步。
所以现在我想做的是:
- 创建一个名为(比如说)“edge”的新分支
- 将 master 上所有已更改/未跟踪的文件移动到边缘(这样 master 从我开始修复错误时就没有改变)
- 在边缘完成我的工作,重新合并到 master
我该怎么做?
【问题讨论】:
我开始着手对我的主分支上的一个小错误进行修复。然而,它已经失控到我希望我首先创建一个单独的分支来进行开发的地步。
所以现在我想做的是:
我该怎么做?
【问题讨论】:
如果您还没有提交任何内容,那么您已经处于正确的位置。
git checkout -b edge git add 照常需要并提交即可。edge 的提交后,使用git checkout 和git merge edge 切换回master。【讨论】:
为了补充 JB 的答案,如果您已经开始在 master 上进行一些提交,最终成为“边缘”工作,您可以:
git stash
git checkout -b edge master
git branch -f master SHA1_before_your_commits
git stash apply
【讨论】:
edge 上的提交(在master 上)是 在master 上,是的。我已经编辑了答案。
git stash 在这里有什么用处,因为使用git checkout -b 根本不会修改工作树...
如果你试图将工作从 master 移动到一个已经存在但在 master 之后的分支,git 不会让你切换到另一个分支。在这种情况下,请执行以下操作:
git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch
【讨论】: