2016-11-30 2 views
11

Я создал репо, создал в нем файл, поместил в файл некоторый контент и передал файл. Теперь я хотел бы увидеть diff этого коммита, который в идеале должен показать добавленный файл и строки, которые были добавлены к нему.Как получить Git diff от первого коммита?

Однако git diff HEAD^ HEAD возвращает fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree., вероятно, потому что это было первое совершение репо.

Как это можно решить? Есть ли способ просмотреть diff файлов, которые были добавлены в первом коммите?

+1

'git show' может работать. Но первый diff всегда от нуля до целого содержимого. – ElpieKay

+0

@ElpieKay Это работает, но это также включает в себя сводку фиксации. Возможно, чтобы он печатал только diff без сводки фиксации. Если я делаю git show '? –

+0

'git show - pretty = %% | sed 1,2d'. '%%' может быть любым заполнителем, который выводит только одну строку, например. '% h','% t'. – ElpieKay

ответ

38

Вы можете сделать:

git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD 

4b825dc642cb6eb9a060e54bf8d69288fbee4904 является идентификатор «пустого дерева» в Git, и это всегда доступны в каждом хранилище.

+3

@CharlesBaley, Cool, Где вы получаете этот код sha-1? – gzh

+0

Ницца, это что-то задокументированное или это полагается на шаткую функциональность, которая может уйти в будущем? –

+2

Идентификатор пустого дерева не изменится, пока git продолжает использовать sha1. Вы можете использовать '$ (printf '' | git hash-object -t tree -stdin)' для лучшей удобочитаемости. –

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