2014-12-10 9 views
1

Предположим, у нас есть репозиторий git, содержащий два изображения: alice.png и bob.png. Мы совершили это в Initial commit.Доступ к двоичному премодифицированному файлу перед отправкой

После этого мы делаем cp bob.png alice.png, поэтому alice.png будет иметь тот же контент с bob.png.

Выполнение git diff показывает это.

Теперь, если я открою alice.png Я вижу Боба. Как я могу открыто открыть/прочитать/получить доступ к старому alice.png (что появляется, если я делаю git checkout alice.png)?


Лучшее (что не является хорошим) решение, которое я нашел это:

  • скопировать репозиторий в временный каталог
  • сделать git checkout .
  • получить измененные файлы из оригинального каталога
  • читать немодифицированные файлы из каталога тем

Но я полагаю, что должно быть лучшее решение.


Для бинарных файлов git show HEAD:path/to/file does this, но для меня, когда не делать ничего git show HEAD:alice.png выводится.

+0

возможно дубликат [ГИТ-контроль старой версии файла под новым именем] (http://stackoverflow.com/questions/888414/git-checkout-older-revision-of-a-file- under-the-new-name) –

+0

@CarlNorum Кажется правильным решением, но я получаю эту ошибку: 'fatal: Path '1.png' существует на диске, но не в 'HEAD ^'.' –

+0

Вы не хотите 'HEAD ^' в вашем случае, просто 'HEAD'. Вы также можете использовать хэш вашего 'Initial commit'. Дело в том, чтобы указать версию, которая включает файл, который вы хотите проверить. Если у вас есть только одно сообщение, у вас даже нет * 'HEAD ^'. –

ответ

1

Вы можете получить доступ к файлу при заданной фиксации с помощью git show. Поскольку ваши изменения все еще не завершены, старый файл по-прежнему находится в HEAD.

# This opens a file in the pager 
git show HEAD:path/to/file 

# Save the file to disk 
git show HEAD:alice.png > temp.png 

Если у вас есть программа просмотр изображений, который поддерживает трубопроводы на стандартном вводе, такие как ImageMagick-х display, вы можете просматривать изображения непосредственно.

git show HEAD:alice.png | display 
+0

Вы протестировали его? 'git show HEAD: alice.png' ничего не выводит ... –

+0

Когда я это пробовал, мой пейджер показывал кучу двоичного мусора (закодированное изображение). Ваш пейджер по умолчанию для git, вероятно, игнорирует содержимое двоичного файла. Вы пытались сохранить файл и открыть его в своем средстве просмотра изображений? –

+0

Да, я пробовал. Но поскольку '>' просто перенаправляет вывод, он создал пустой файл. –