我在當前的文件和外部驅動器上的文件備份之間運行差異檢查器,並且發現git repo和它的備份之間存在一些差異。唯一的區別是左側的.git/objects下有一些額外的文件,右側有兩個空白的.git/objects/info和.git/objects/pack文件夾。我在兩側快速執行了git show
和git log
,這給出了相同的輸出。Git找不到懸掛樹的起源
然後我做了一個git fsck --no-reflogs
,發現左側有一個額外的懸掛提交。迭代git ls-tree
按照我的方式,額外的提交給了我一堆樹木和Blob,除了左側的其中一個額外文件之外,它們都佔了一大堆。
在最後一個文件上使用git cat-file -t <sha1>
告訴我這是一棵樹。但是,我在每次提交時都使用了git ls-tree
,但仍然沒有找到此神祕樹對象的引用。那麼這個文件究竟是從哪裏來的?我99.99%肯定沒關係,只是好奇而已:P
我實際上發現很多git repo都遵循相同的模式:左側的額外對象,右側的空/ info和/ pack文件夾。我確實改變了Git客戶端,我猜測這導致了所有這些差異。儘管如此,我還是很好奇這個特定的額外文件來自哪裏 – woojoo666 2015-02-23 12:52:15
對兩個不同的回購站運行'diff'或類似的東西,即使它們在分支頭,遙控器,本地提交和工作目錄方面目前具有完全相同的狀態,由於至少是對象的打包/解包狀態,垃圾收集運行的頻率,reflog以及其他一些可能的原因,所以不會成爲可靠的比較方法... – twalberg 2015-02-23 16:35:06
有趣,我想我會擁有閱讀這些主題。是的,我有一個懷疑,我在兔子洞裏走得太遠,但這是一個相對較小的回購(4-5次提交),所以我認爲這將是一個很好的機會,看看git的實際工作情況 – woojoo666 2015-02-23 21:29:14