将开发更改移动到新的功能分支

Move develop changes to a new feature branch

对于我的项目,我使用 git-flow。我有 masterdevelop 分支与 remote-repo 同步 通常对于所有更改,我创建一个 feature 分支,编辑文件,在 feature 分支上提交更改并关闭分支并在 develop.

中合并

但有时我忘记创建 feature 分支,我直接在 develop 中编辑文件。如何将 canges 移动到新的 feature 分支?

假设您已经在本地提交了这些更改并且还没有推送,您可以使用软重置:

git reset --soft HEAD~1
git checkout feature
git commit

只需将 git reset --soft HEAD~1 中的 1 替换为您要软重置的提交数即可。

您可以使用 git 存储将更改放入新分支,参见 git book

所以在 master 中,在你做出更改(但没有添加或提交)之后你可以这样做:

git stash //stashes the changes
git stash branch featurebranchname //creates a new branch and applies the stash to it

如果您已经提交 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 将放弃任何未提交的更改。我总是建议只使用干净的工作树来操作提交历史记录,但是为了避免这种情况,您可以使用 different reset mode 之类的 --merge,只要您未提交的更改不是任何内容,它就会允许重置C...D.

中更改的文件

您可以挑选对新分支的更改。