Git: Показать содержимое файла, как оно будет выглядеть после фиксации - PullRequest
35 голосов
/ 01 марта 2011

После прочтения Git pre-commit hook: измененные / добавленные файлы , возник следующий вопрос:

Если у меня есть файл с поэтапными и неустановленными изменениями, как я могу отобразитьпредварительный просмотр содержимого файла после постановки?

Пример:

echo "foo" >> file
git add file
echo "bar" >> file

Требуемый вывод:

[previous contents of file]
foo

Ответы [ 4 ]

95 голосов
/ 01 марта 2011

Используйте префикс : для доступа к объектам в текущем индексе (подготовлены, но еще не зафиксированы).

git show :file

См. gitrevisions (выделено мной):

<rev>:<path>, e.g. HEAD:README, :README, master:./README

Суффикс :, за которым следует путь, который именует BLOB-объект или дерево по заданному пути в объекте tree-ish, названном частью перед двоеточием. :path (с пустой частью перед двоеточием) является частным случаем синтаксиса, описанного ниже: содержимое записывается в индекс по заданному пути .

6 голосов
/ 01 марта 2011

Обновление: ответ от grawity имеет гораздо более точное решение

Этот рецепт взят из ответа Джилидева на другой вопрос :

git cat-file blob $(git ls-files -s file | awk '{print $2}')

Возможно, вы захотите создать для этого git alias , если собираетесь использовать его часто.

0 голосов
/ 01 марта 2011

Вы можете сделать git diff --cached, но это не совсем то, что вы хотите.

git grep -h --cached ^ -- file

работает для меня.

0 голосов
/ 01 марта 2011

Просто посмотрите на верхний ответ на этот вопрос: Как показать изменения, которые были организованы?

Опция --cached - это то, что вам нужно.

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