Как получить SHA коммита из вывода diff?

Как я могу получить SHA коммита из вывода diff?

Например, мне нравится сравнивать двоичный файл, вывод git show COMMIT:

diff --git a/0_prospektusok/FAR_feltetdiszek/feltetdisz_prospektus.xls b/0_prosp
index 9993010..707c169 100644
Binary files a/0_prospektusok/FAR_feltetdiszek/feltetdisz_prospektus.xls and b/0

git show 9993010 показывает файл на терминале, но если я перенаправляю его в файл и открываю в MS Excel, он содержит мусор.

git checkout 9993010 говорит fatal: reference is not a tree: 9993010.

Как я могу проверить версии a и b?


person bimlas    schedule 25.04.2016    source источник
comment
Возможный дубликат stackoverflow.com/questions/19224476/ (хотя я пока не хочу закрывать это как дубликат)   -  person torek    schedule 25.04.2016


Ответы (1)


Если вы хотите получить весь репозиторий таким, каким он был до COMMIT, используйте git checkout COMMIT~.
Если вы хотите сохранить свою рабочую копию и все, кроме обновления файла до состояния, которое было до COMMIT, используйте git checkout COMMIT~ -- 0_prospektusok/FAR_feltetdiszek/feltetdisz_prospektus.xls.
Для объяснение, почему git checkout 9993010 не сработало, прочитайте ответ на Как индекс f2e4113..d4b9bfc 100644 в git diff соответствует идентификатору SHA1 в gitk?

person Vampire    schedule 25.04.2016
comment
И как я могу узнать SHA коммита, который вводит 9993010? - person bimlas; 25.04.2016
comment
Это нельзя однозначно идентифицировать, так как это просто большой двоичный объект с содержимым файла, который может появиться в любом количестве коммитов. Вы можете использовать один из сценариев из ответа на stackoverflow. com/questions/223678/what-commit-has-this-blob, чтобы получить все коммиты, содержащие большой двоичный объект. Но, как вы сделали git diff COMMIT, вам нужно COMMIT~. - person Vampire; 25.04.2016