我正在使用git-flow来管理我的项目,并在develop分支上开始了一系列相当复杂的更改,似乎比我最初预期的要花费更长时间。
我希望我之前在一个功能分支上完成这些更改,因为我想发布一个包含其他更改的新版本。那么,我该如何将这些未提交的更改移动到一个新的git-flow功能分支中呢?
如果您没有进行过提交
如果您只是有一个未提交的工作副本,那么就像要开始一个新的功能一样处理:
git flow feature start awesomeness
git commit -va
如果您进行了一些提交
如果 develop 分支中存在应该在您的 feature 分支中的提交,则上述步骤是相同的。此外,您可能希望将 develop 分支重置回您开始为 feature 分支提交更改之前的状态(这不是必需的),可以使用以下命令:
git flow feature start awesomeness
git commit -va
git checkout develop
git reset origin/develop --hard
git checkout where-you-should-have-made-your-feature-branch
git branch feature-branch
git checkout feature-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in chronological order
git cherry-pick commit
现在取决于你是否已经将你的开发分支推送到公共仓库。如果所有内容仍然是私有的,并且你想要重写历史记录:
git checkout develop-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in reverse chronological order
git rebase --onto commit~1 commit develop-branch
如果您不想重写历史:
git checkout develop-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in reverse chronological order
git revert commit
那就可以了。