У меня была проверка различий между моими текущими файлами и резервной копией файлов на моем внешнем диске, и я обнаружил некоторые различия между репозиторией git и ее резервной копией. Единственными отличиями были некоторые дополнительные файлы под .git/objects на левой стороне и две пустые .git/objects/info и .git/objects/pack папки справа. Я сделал быстрые git show
и git log
с обеих сторон, которые дали идентичные выходы.Git не может найти оборванное дерево.
Затем я сделал git fsck --no-reflogs
и нашел еще одну дополнительную обвязку с левой стороны. Итерационно git ls-tree
, используя мой путь, что дополнительный коммит дал мне кучу деревьев и капель, которые учитывали все, кроме одного из дополнительных файлов с левой стороны.
Используя git cat-file -t <sha1>
, этот последний файл сказал мне, что это дерево. Тем не менее, я использовал git ls-tree
на каждой фиксации и до сих пор не нашел ссылки на этот загадочный древовидный объект. Итак, откуда именно появился этот файл? Я 99.99% уверен, что это не имеет значения, просто любопытно: P
Я действительно нашел довольно много git repo, которые следовали одному и тому же шаблону: дополнительные объекты на левой стороне, пустые/info и/pack папки с правой стороны. Я изменил клиентов Git, которые, как я предполагаю, вызвали все эти несоответствия. Тем не менее, мне все еще любопытно, где этот конкретный дополнительный файл поступает от – woojoo666
Запуск 'diff' или что-то подобное против двух разных репозиториев, даже если они в настоящее время имеют то же самое состояние в отношении ветвей ветвей, пультов, локальных коммитов и рабочего каталога , никогда не будет надежным методом сравнения из-за, по крайней мере, упакованного/распакованного состояния объектов, частоты сборок сбора мусора, ошибок и нескольких других возможных причин ... – twalberg
Интересно, я думаю, у меня будет немного почитать эти темы. Да, у меня было подозрение, что я слишком далеко опустился вниз по кроличьей норе, но это было относительно небольшое репо (4-5 коммитов), поэтому я подумал, что это будет хороший шанс увидеть, как реально работает git – woojoo666