协慌网

登录 贡献 社区

如何解决提交到错误的 Git 分支的问题?

我只是对错误的分支做出了非常好的承诺。如何撤消 master 分支中的最后一次提交,然后进行相同的更改并将其放入我的升级分支中?

答案

如果尚未推送更改,还可以进行软重置:

git reset --soft HEAD^

这将还原提交,但是将提交的更改放回索引中。假设分支之间的关系是相对最新的,git 可以让您签入另一个分支,然后您可以简单地提交:

git checkout branch
git commit

缺点是您需要重新输入提交消息。

在该主题上晚了 4 年,但这可能对某人有所帮助。

如果您在提交并在 master 上全部提交之前忘记创建一个新分支,那么无论您执行了多少次提交,以下方法都会更容易:

git stash                       # skip if all changes are committed
git branch my_feature
git reset --hard origin/master
git checkout my_feature
git stash pop                   # skip if all changes were committed

现在,您的 master 分支等于origin/master ,所有新提交都在my_feature 。请注意, my_feature是本地分支,而不是远程分支。

如果您有干净的(未经修改的)工作副本

要回滚一个提交(请确保您记下下一步的提交哈希):

git reset --hard HEAD^

要将提交提交到另一个分支:

git checkout other-branch
git cherry-pick COMMIT-HASH

如果您已修改或未跟踪更改

另请注意, git reset --hard杀死您可能拥有的所有未跟踪和已修改的更改,因此,如果有,则可能更喜欢:

git reset HEAD^
git checkout .