将开发更改移动到新功能分支

时间:2015-05-14 12:12:44

标签: git git-branch git-merge git-flow

对于我的项目,我使用 git-flow 。我将masterdevelop分支与remote-repo同步 通常对于所有更改,我创建一个feature分支,编辑文件,在feature分支上提交更改并使用develop中的合并关闭分支。

但有时我会忘记创建一个feature分支,并直接在develop中编辑文件。如何在新的feature分支中移动小组?

4 个答案:

答案 0 :(得分:11)

如果您已经提交develop,那么您的历史记录如下:

A---B---C---D develop

此处,Cdevelop上的最后一次正确提交,而D应该已提交给功能分支。执行以下操作(在develop上时):

git branch feature      # creates feature branch pointing at D
git reset --hard C      # or HEAD^, HEAD~1, etc - resets develop back to C

这将导致:

A---B---C develop
         \
          D feature

如果您进行了多次提交,这也可以正常工作,因为您可以在第二个命令中替换重置develop所需的提交引用。

值得注意的是,reset --hard将丢弃任何未提交的更改。我总是建议只使用干净的工作树来操作提交历史记录,但为了避免这种情况,您可以使用--merge C...D,只要您的未提交的更改不是任何更改,这将允许重置文件已在m_MyFrag中更改。

答案 1 :(得分:2)

您可以使用git stash将更改添加到新分支,请参阅git book

所以在master中,在你做出更改后(但没有添加或提交)你可以这样做:

git stash //stashes the changes
git stash branch featurebranchname //creates a new branch and applies the stash to it

答案 2 :(得分:1)

假设您已经在本地提交了这些更改但尚未推送,则可以使用软重置:

git reset --soft HEAD~1
git checkout feature
git commit

只需将git reset --soft HEAD~1中的1替换为您想要软复位的提交数。

答案 3 :(得分:-2)

您可以选择更改新分支。