将开发更改移动到新的功能分支
Move develop changes to a new feature branch
对于我的项目,我使用 git-flow。我有 master
和 develop
分支与 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
.
中更改的文件
您可以挑选对新分支的更改。
对于我的项目,我使用 git-flow。我有 master
和 develop
分支与 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
.
您可以挑选对新分支的更改。