11

我正在为我的项目使用 git-flow,并在开发分支中开始了一组相当复杂的更改,这似乎比我最初预期的要花更长的时间。

我希望我在功能分支中完成了这项工作,因为我想制作一个带有其他更改的新版本。如何将这些未提交的更改移动到新的 git-flow 功能分支中?

4

2 回答 2

21

如果你没有提交

如果你只是有一个肮脏的工作副本,就像你即将开始一个新功能一样:

git flow feature start awesomeness
git commit -va

如果你确实做了一些提交

如果开发中有应该在您的功能分支中的提交,则上述步骤是相同的​​。此外,尽管您(可能 - 这不是必需的)想要将您的开发分支重置回您开始为您的功能分支提交更改之前的位置,您可以这样做:

git flow feature start awesomeness
git commit -va
git checkout develop
git reset origin/develop --hard
于 2012-05-22T22:35:49.707 回答
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

那应该这样做。

于 2012-05-22T15:43:40.723 回答