如何查看两个相同修订版之间的区别?
How to see the difference between two identical revisions?
TL;DR
不同的血统,空差异,不同的程序。如何看出有什么不同?
这个问题的答案,我想,应该是:如果它们相同,那么没有区别。
我现在遇到的情况是,我有两个不同的修订版,似乎有一个空差异。
> git diff --quiet a1e4 5010; echo $?
> 0
它们有不同的提交散列,它们包含的程序行为不同,但 diff
是空的。这怎么可能?
有没有更强大的diff
我不知道那会显示出更深层次的差异?
散列不是只根据内容计算的吗?那为什么 diff
没有检测到任何东西?
这是图表
* 551d4dc very merge
|\
| |
| * a1e4b09 wow!
| |\
| | |
| | * a337e3c so uninteresting
| | |\
| | | |
| * | | a9f878a many unimportant
| |/ /
| | |
| * | 6d08e83 such irrelevance
| | |
* | | 5010427 wow!
| |/
|/|
| |
* | 74ac627 many father
|/
|
* f0aa6af such grandpa
|
.
Isn't the hash computed on content alone? Then why is the diff not detecting anything?
树的散列仅取决于其内容。 commit 包含对树的引用,还包含提交消息、日期、作者、对其父提交的引用等,其哈希是所有这些信息。两次提交可以反映相同的文件状态,并且它们之间没有差异,但具有不同的哈希值。事实上,他们必须这样做。
The answer to the question, I thought, should be: if they are identical, there are no differences.
2 次提交的内容相同,这意味着在幕后 git 将对树(指针)使用相同的 SHA-1,但正如 hobbs 上面解释的 commit SHA-1 是提交内容的校验和。
提交包含 blob 树和更多信息。
提交对象本身只是元数据的校验和 (SHA-1),包括给定提交的树的树对象。
提交包含的信息比下图中包含的信息更多,例如时间戳等。
为了理解存储在提交中的内容,我们需要了解什么是提交。提交是附加到内容的元数据。
每次您将文件添加到 git 时,它们都会开始被内容的 SHA-1 跟踪和命名。当您提交更改时 git 创建一个 tree 对象,它指向在此修订中提交的文件的树。
如果没有进行任何更改,树将指向与上一次提交相同的树。如果有变化,就会有一棵新树。
如果您想查看提交的内容,请使用 git show
git show <SHA-1>
例如这里是 git 显示的样子:
TL;DR
不同的血统,空差异,不同的程序。如何看出有什么不同?
这个问题的答案,我想,应该是:如果它们相同,那么没有区别。
我现在遇到的情况是,我有两个不同的修订版,似乎有一个空差异。
> git diff --quiet a1e4 5010; echo $?
> 0
它们有不同的提交散列,它们包含的程序行为不同,但 diff
是空的。这怎么可能?
有没有更强大的diff
我不知道那会显示出更深层次的差异?
散列不是只根据内容计算的吗?那为什么 diff
没有检测到任何东西?
这是图表
* 551d4dc very merge
|\
| |
| * a1e4b09 wow!
| |\
| | |
| | * a337e3c so uninteresting
| | |\
| | | |
| * | | a9f878a many unimportant
| |/ /
| | |
| * | 6d08e83 such irrelevance
| | |
* | | 5010427 wow!
| |/
|/|
| |
* | 74ac627 many father
|/
|
* f0aa6af such grandpa
|
.
Isn't the hash computed on content alone? Then why is the diff not detecting anything?
树的散列仅取决于其内容。 commit 包含对树的引用,还包含提交消息、日期、作者、对其父提交的引用等,其哈希是所有这些信息。两次提交可以反映相同的文件状态,并且它们之间没有差异,但具有不同的哈希值。事实上,他们必须这样做。
The answer to the question, I thought, should be: if they are identical, there are no differences.
2 次提交的内容相同,这意味着在幕后 git 将对树(指针)使用相同的 SHA-1,但正如 hobbs 上面解释的 commit SHA-1 是提交内容的校验和。
提交包含 blob 树和更多信息。
提交对象本身只是元数据的校验和 (SHA-1),包括给定提交的树的树对象。
提交包含的信息比下图中包含的信息更多,例如时间戳等。
为了理解存储在提交中的内容,我们需要了解什么是提交。提交是附加到内容的元数据。
每次您将文件添加到 git 时,它们都会开始被内容的 SHA-1 跟踪和命名。当您提交更改时 git 创建一个 tree 对象,它指向在此修订中提交的文件的树。
如果没有进行任何更改,树将指向与上一次提交相同的树。如果有变化,就会有一棵新树。
如果您想查看提交的内容,请使用 git show
git show <SHA-1>
例如这里是 git 显示的样子: