Как вы git показывает постановочный файл - PullRequest
1 голос
/ 25 марта 2020

Я могу сделать git show <some-commit>:path/to/some/file, но что мне заменить <some-commit>, чтобы получить текущую поэтапную версию файла?

Контекст: я пишу ловушку перед фиксацией и хочу выполнить проверку на промежуточных файлах, не прибегая к хранению неустановленных изменений. Есть ли лучший способ?

1 Ответ

4 голосов
/ 25 марта 2020

Использовать git show :path/to/some/file.

Файлы, которые «подготовлены», представляют собой индексную копию файла, которая отличается от какой-либо другой копии, такой как текущая копия фиксации, к которой вы можете получить доступ через HEAD:path/to/some/file.

Файлы, хранящиеся в индексе, имеют номер этапа , обычно равный нулю. (Промежуточные слоты 1, 2 и 3 используются во время конфликтующих объединений.)

Для ссылки на копию файла с именем F (в вашем случае F = path/to/some/file), используйте спецификатор ревизии :<em>number</em>:<em>F</em>. В данном случае это :0:path/to/some/file. Когда число равно нулю (обычно это так), вы можете опустить одно двоеточие и ноль, оставляя :path/to/some/file.

Обратите внимание, что когда git status ничего не говорит об этом файле, он находится в индексе, это просто :0:path/to/some/file имеет те же данные , что и HEAD:path/to/some/file. Если бы файла вообще не было в индексе - ни в каких временных интервалах - git status сообщит вам, что файл подготовлен для удаления.

(В контексте: если у вас есть место, я бы рекомендуем сделать git checkout-index из каждые stage-zero-index-file во временную рабочую область. Чтобы легко проверить, все ли индексные файлы находятся на нулевой стадии, используйте git write-tree, что не работает, если какие-либо файлы в промежуточных слотах, отличных от нуля.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...