将在开发分支中进行的修改移动到一个新的git-flow功能分支中?

11

我正在使用git-flow来管理我的项目,并在develop分支上开始了一系列相当复杂的更改,似乎比我最初预期的要花费更长时间。

我希望我之前在一个功能分支上完成这些更改,因为我想发布一个包含其他更改的新版本。那么,我该如何将这些未提交的更改移动到一个新的git-flow功能分支中呢?

2个回答

22

如果您没有进行过提交

如果您只是有一个未提交的工作副本,那么就像要开始一个新的功能一样处理:

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

我不知道该功能可以在未提交的更改后启动。谢谢! - plang

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

那就可以了。


在循环中使用git rebase似乎有点不必要/笨拙 - 这里的想法是什么? - AD7six
嗨,谢谢你的回答,但是还没有提交任何东西。解决方案比那更简单。 - plang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接