我想比较两个我怀疑是相同的提交。为什么
$ git diff 9d3fd2..893f5b
fatal: ambiguous argument '9d3fd2..893f5b': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
$ git diff 9d3fd2 893f5b
fatal: ambiguous argument '9d3fd2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
失败,而完整的提交名称不是
$ git diff 9d3fd263dd6625078cc12b358c97ca2dca51826c 893f5ba2871b13f87365620b4d02e40519f08734
$ git diff 9d3fd263dd6625078cc12b358c97ca2dca51826c..893f5ba2871b13f87365620b4d02e40519f08734
我检查了git log
的输出,但未发现其他提交共享相同的缩写提交名称。
感谢。
答案 0 :(得分:4)
我检查了
git log
的输出,并没有发现其他提交共享相同的缩写提交名称。
这里有两种可能性:
要扩展第一点,git log
仅显示可从HEAD
或您提供的任何参数访问的提交:
git log
:显示HEAD提交,之前的提交可以从HEAD
git log master
:显示master
的提示,之前的提交可以从提示提交git log master develop
:显示master
和develop
的提示提交,以及之前提交的提交可以从这两个提交git log --branches
:显示所有分支的提示提交以及所有早期可达提交git log --all
:显示所有分支的提示提交,所有标记的提交,stash
引用的提交(如果有),依此类推:find all 引用。使用这些提交来查找所有早期可达的提交。您可能希望最后一个提交所有提交,但它不会: reflogs 中可能有提交,如果这些提交已启用,则会丢失;并且可能存在未引用的提交,这些将在下次git gc
运行时被垃圾收集,但仍然在垃圾箱中,仍然可以被提取和查看。
在任何情况下,即使您设法命名存储库中的每个提交,存储库也会保存四种类型的对象:提交,带注释的标记,树和blob。注释标记,树或blob的哈希ID通常保持相当好的隐藏,因为这些更多&#34;实现细节&#34;而不是&#34;有用的数据&#34;。但是它们仍然占用了存储库哈希空间,因而干扰了引用缩短。
使任何特定缩短的哈希值唯一所需的字符数很难准确预测,但如果您知道存储库中存储的对象(所有四种类型)的总数,则概率估算并不太难。但是一开始很难知道对象的总数 - 你偶尔会看到Git计算它们,并且在一个大的存储库中需要一段时间!在你的情况下:
9d3fd2
只有六个字符;添加第七个可以将模糊性的可能性降低16倍,并且可能就足够了。如果存储库非常大,或者您非常不走运,则可能需要8,9,10或甚至更多字符才能获得唯一的哈希ID。
答案 1 :(得分:2)
可能有多个修订版使用了您正在使用的缩短ID之一。尝试提供更长的身份证(我认为Linus最近把这个长度花了大约11个字符)。