Предположим, у нас есть репозиторий 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
выводится.
возможно дубликат [ГИТ-контроль старой версии файла под новым именем] (http://stackoverflow.com/questions/888414/git-checkout-older-revision-of-a-file- under-the-new-name) –
@CarlNorum Кажется правильным решением, но я получаю эту ошибку: 'fatal: Path '1.png' существует на диске, но не в 'HEAD ^'.' –
Вы не хотите 'HEAD ^' в вашем случае, просто 'HEAD'. Вы также можете использовать хэш вашего 'Initial commit'. Дело в том, чтобы указать версию, которая включает файл, который вы хотите проверить. Если у вас есть только одно сообщение, у вас даже нет * 'HEAD ^'. –