Github与Git显示同一Commit变更不一致,如何找回需回滚的变更?
解决合并提交在GitHub与本地Git显示差异的问题
我之前也遇到过一模一样的情况,核心原因是你要处理的是合并提交——从你给出的git show结果里的Merge: b626839 1d24d68就能看出来,Git默认对合并提交的展示逻辑和GitHub完全不一样:
- GitHub上显示的是这个合并提交把另一个分支的所有变更都合并进来后的完整变更集;
- 而本地默认执行
git show <commit-hash>时,只会展示合并过程中解决冲突的那些变更,不是两个分支之间的全部差异。
查看GitHub上显示的完整变更
你可以用下面的命令来查看这个合并提交带来的所有变更:
- 只看变更的文件列表:
git show fc44285b630a2152f41f000195ec8f76bca7658c --stat
- 查看完整的diff内容:
git show fc44285b630a2152f41f000195ec8f76bca7658c^..fc44285b630a2152f41f000195ec8f76bca7658c
或者直接对比合并提交的两个父分支差异(更直观):
git diff fc44285b630a2152f41f000195ec8f76bca7658c^1 fc44285b630a2152f41f000195ec8f76bca7658c^2
回滚这个合并提交
回滚合并提交不能用普通的git revert,因为需要指定保留哪个父分支的内容。通常-m 1表示保留你原本分支的内容(也就是完全撤销合并进来的那个分支的所有变更):
git revert -m 1 fc44285b630a2152f41f000195ec8f76bca7658c
执行后Git会生成一个新提交,把合并进来的变更全部撤销。
内容的提问来源于stack exchange,提问作者mlevy
相关产品推荐
相关产品推荐

