【发布时间】:2017-03-07 23:53:54
【问题描述】:
我有 2 个提交:A 和 B。据说 B 会还原 A。即假设 B 是使用“git revert A”创建的
为了验证上述内容,我可以:
- git checkout A
- git cherry-pick B
- git diff A~1(应该返回0行差异)
有没有 diff 工具可以在不使用 git 的情况下做同样的事情?
提前谢谢你。
【问题讨论】:
-
通过检查很明显。如果某个变更集 C 将初始输入状态 I 修改为输出状态 O,则还原变更集是 -C,因为它将输出状态 O 修改为输入状态 I。换句话说,如果 C 说“添加文件 F1,删除文件 F2,删除 F3 的第 12 行”,那么 -C 说“删除文件 F1,添加文件 F2,将F3" 后排第 12 行。
-
顺便说一句,你说你有两个补丁 A和B,但是你说
git checkout A和git cherry-pick B,这意味着A和B是两个提交 ID。这些不是一回事。你有哪些,提交 ID 或补丁? -
做一个真正的樱桃采摘不是更明显吗?如果您之后不需要cherry-pick 所做的提交,只需运行
git reset HEAD^ --hard。 -
@torek 我正在使用来自上游来源的提交 ID(我编辑了问题)。提交的大小各不相同,有些可能会更改数十个文件。我正在尝试编写一个工具来验证这些还原,然后再将它们应用到我们的下游存储库。谢谢。
-
@ElpieKay 谢谢,是的,这是我目前的计划,但我正在探索是否有其他选择。