扫码关注官方订阅号
合并分支后,发现合并错了分支。 master上还没有提交任何东西,想取消这次合并,让分支回到位,肿么办?
好在现在还没commit另外的内容,如果不小心commit了,那又该怎么办啊?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
如果确定放弃这次合并的提交,假如是 merge 了错误的分支到 master,先通过 git reflog 或者 gitg、gitk、qgit 等工具确定你 merge 之前 master 所在的 commit,然后在 master 分支上使用 git reset --hard <commit> 重置头指针。一般来说,在 master 上直接执行 git reset --hard HEAD~ 也可以回到合并之前的提交,但 git reset --hard 命令还是使用确定的 commit 为好。注意,git reset --hard 命令有风险,除非十分确定要放弃当前提交,否则最好先 git branch 为当前的提交建立个新的分支引用后再继续,待确定无误后删除即可。
git reflog
git reset --hard <commit>
git reset --hard HEAD~
git reset --hard
git branch
如果错误的合并之后又有了新的提交,可以在完成前述正确的合并之后,通过 git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支> 来在正确的合并提交上重建新的提交。git rebase --onto 命令所重建的提交序列最好是线性的,否则非线性的提交会变成线性的。若需要保存非线性的提交历史,可以考虑使用 --preserve-merges 参数,不过结果很不可靠,具体视提交的非线性程度而定。
git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支>
git rebase --onto
--preserve-merges
B-R-A-N-C-H / \--Merge M-A-S-T-E-R----M
你用git reset --hard R的哈希值, 退回到R就 可以了。 从 Merge过后的M 退回到R。
我想这里应该是需要 git merge --abort 吧
合并时遇到冲突想取消操作,恢复index,用git merge --abort git reset --hard 可以回退到某个提交 git revert可以撤销某个提交,撤销会产生一个新的提交
git rebase还木有仔细研究过。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
如果确定放弃这次合并的提交,假如是 merge 了错误的分支到 master,先通过
git reflog或者 gitg、gitk、qgit 等工具确定你 merge 之前 master 所在的 commit,然后在 master 分支上使用git reset --hard <commit>重置头指针。一般来说,在 master 上直接执行git reset --hard HEAD~也可以回到合并之前的提交,但git reset --hard命令还是使用确定的 commit 为好。注意,git reset --hard命令有风险,除非十分确定要放弃当前提交,否则最好先git branch为当前的提交建立个新的分支引用后再继续,待确定无误后删除即可。如果错误的合并之后又有了新的提交,可以在完成前述正确的合并之后,通过
git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支>来在正确的合并提交上重建新的提交。git rebase --onto命令所重建的提交序列最好是线性的,否则非线性的提交会变成线性的。若需要保存非线性的提交历史,可以考虑使用--preserve-merges参数,不过结果很不可靠,具体视提交的非线性程度而定。B-R-A-N-C-H
/ \--Merge
M-A-S-T-E-R----M
你用git reset --hard R的哈希值, 退回到R就 可以了。 从 Merge过后的M 退回到R。
我想这里应该是需要 git merge --abort 吧
合并时遇到冲突想取消操作,恢复index,用git merge --abort
git reset --hard 可以回退到某个提交
git revert可以撤销某个提交,撤销会产生一个新的提交
git rebase还木有仔细研究过。