在我的项目中,我使用git-flow。我让master和develop分支与remote-repo同步,通常对于所有更改,我创建一个feature分支,编辑文件,在feature分支上提交更改,并在develop中使用合并关闭分支。
但有时我忘记创建一个feature分支,直接在develop中编辑文件。我怎样才能在一个新的feature分支中移动恒流?
发布于 2015-05-14 12:29:24
如果您已经提交了develop,并且您的历史记录如下所示:
A---B---C---D develop在这里,C是develop上的最后一个正确提交,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中的任何文件进行更改,就可以重新设置。
发布于 2015-05-14 12:27:06
可以使用git存储将更改放到一个新分支,请参阅吉特书。
因此,在master中,在您进行更改(但没有添加或提交它们)之后,您可以这样做:
git stash //stashes the changes
git stash branch featurebranchname //creates a new branch and applies the stash to it发布于 2015-05-14 12:23:33
假设您已经在本地提交了这些更改并且尚未按下,则可以使用软重置:
git reset --soft HEAD~1
git checkout feature
git commit只需将git reset --soft HEAD~1中的1替换为要软重置的提交数。
https://stackoverflow.com/questions/30237123
复制相似问题