如果尚未推送更改,还可以进行软重置:
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 .