我正在为我的项目使用git-flow,并且已经在开发分支中启动了一组相当复杂的更改,这看起来比我预期的要长。
我希望我已经在功能分支中完成了这项工作,因为我想通过其他更改创建新版本。如何将这些未提交的更改移动到新的git-flow功能分支中?
答案 0 :(得分:17)
如果您没有提交
如果你只是有一份肮脏的工作副本,就像你即将开始一项新功能一样:
git flow feature start awesomeness
git commit -va
如果 做了一些提交
如果您的功能分支中应该有开发提交,则上述步骤是相同的。此外,虽然您(可能 - 这不是必需的)想要将您的开发分支重置回您开始提交功能分支的更改之前的位置,您可以执行以下操作:
git flow feature start awesomeness
git commit -va
git checkout develop
git reset origin/develop --hard
答案 1 :(得分:2)
这是一种方法:
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
那应该这样做。