awe*_*ndt 7 git version-control
假设我提交了一个二进制文件,然后稍后将其更改为几次提交,现在我在新提交中将其更改回来.
出于好奇,我想知道git是否为它创建了一个新的blob?或者它是否在历史中检测到并重复使用它?如果是这样,它如何检测到?校验?
Git将重用相同的blob.
我做了一个测试.我做了3次提交.首先我提交了一个二进制文件,然后我修改了二进制文件并再次提交.最后,我用第一次提交中使用的原始二进制文件覆盖了文件并再次提交.
第1和第3次提交中的二进制文件内容是相同的.每个提交都是以下分支的HEAD:
第一次提交:"第一次".第二次提交:"第二次".第3次提交:"主人"
然后,如果你运行"git cat-file -p FIRST ^ {tree}",它会显示二进制文件的哈希码.
$ git cat-file -p FIRST^{tree}
100644 blob ec049240a47b472bd7c31d1fa27118c4fe2f1229 test.db3
$ git cat-file -p SECOND^{tree}
100644 blob a47bb3727e5aefe3ec386bec5520f3e4ffb3a4c5 test.db3
$ git cat-file -p master^{tree}
100644 blob ec049240a47b472bd7c31d1fa27118c4fe2f1229 test.db3
Run Code Online (Sandbox Code Playgroud)
您会发现第1次和第3次提交的blob的哈希码是相同的.
git非常聪明,可以检查是否存在哈希代码的blob,如果找到则重用该blob.
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |