我很想知道Git在这种情况下的差异,我在Git文档中找不到
假设在分支A上,我有三个提交Branch A: Commit 3 <-- Commit 2 <-- Commit 1
Commit 3
是最新的分支。
- 现在,如果我们重写提交历史,即重置最近的
Head~2
提交,并将它们压缩成一个,那么分支看起来像
Branch A: Commit 3' <-- Commit 1
Commit 3'
包括commit 3和commit 2。
现在如果我运行命令git diff commit3 commit3'
,它会工作吗?如果是,那么为什么会有不同的变化?
- 如果我们删除
commit 3
,只保留commit 2
作为最新的主服务器。然后git diff commit 3 commit 2
会显示什么?
注意:这里的commit 3已经被删除了,如果发现diff, git将如何跟踪它?
它会起作用,因为每次提交实际上都是工作存储库当前状态的快照,而不管是什么使该存储库进入这种特定状态。因此,你可以将任何修订与任何其他修订进行比较。
如果你只是简单地重基合并你的提交,你应该没有commit3
和commit3'
之间的区别,因为它们的最终状态是相同的。
这不同于"应用更改",例如"挑选"。在后一种情况下,首先通过比较所选择的提交与其父提交来获得变更集,然后将diff的结果应用于当前工作目录。