对于我的项目,我使用 git-flow 。我将master
和develop
分支与remote-repo同步
通常对于所有更改,我创建一个feature
分支,编辑文件,在feature
分支上提交更改并使用develop
中的合并关闭分支。
但有时我会忘记创建一个feature
分支,并直接在develop
中编辑文件。如何在新的feature
分支中移动小组?
答案 0 :(得分:11)
如果您已经提交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
,只要您的未提交的更改不是任何更改,这将允许重置文件已在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)
您可以选择更改新分支。