2016-07-21 2 views
0

Я хочу сравнить две версии файла (которые существуют на разных путях) при разных коммитах в git. Я не хочу diff, я просто хочу знать, совпадают ли содержимое и режимы. Документация для diff-файлов не указывает никакого значения для возвращаемых значений. Я не вижу ничего похожего на cmp (1) в git. Есть ли другой инструмент для сантехники, чтобы сделать это, или у diff-файлов есть возвращаемые значения, которые выражают это?Как программно сравнивать файлы с двумя версиями в git?

+0

Я полагаю, что если файлы одинаковы, они должны быть одинаковыми. Включает ли режим blob режим? –

ответ

0

git ls-tree <commit> -- <path> выходы

<mode> SP <type> SP <object> TAB <file>

<mode> - это файловый режим. <object> - это sha1, который указывает содержимое.

Сравните режимы и объекты.

<object> здесь можно назвать по-другому

<commit>:<path>

Так git rev-parse <commit>:<path> может выводить sha1 из сгустка или дерева. Сравнивая два sha1, мы можем видеть, совпадают ли они или нет.

3

git diff --exit-code <commit> <commit> Я считаю, что вы ищете. Его почти до дна в Документах https://git-scm.com/docs/git-diff

Или

git diff --quiet <commit> <commit> Если чисто заинтересованы в коде выхода, и ничего более (без вывода консоли)

Смежные вопросы