繁体   English   中英

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

[英]Move develop changes to a new feature branch

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

但有时我忘了创建一个feature分支,我直接在develop编辑文件。 如何在新feature分支中移动canges?

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

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

在这里, C是最后的正确提交关于developD应该一直致力于特性分支。 执行以下操作(在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更改的任何文件,就会允许重置C...D

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

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

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

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

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

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

您可以选择更改新分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM