Git: Показать содержимое файла, как он будет выглядеть после совершения
После чтения Git pre-commit hook: измененных/добавленных файлов возник следующий вопрос:
Учитывая, что у меня есть файл с пошаговыми и неустановленными изменениями, как я могу отобразить предварительный просмотр содержимого файла после этапа?
Пример:
echo "foo" >> file
git add file
echo "bar" >> file
Требуемый вывод:
[previous contents of file]
foo
Ответы
Ответ 1
Используйте префикс :
для доступа к объектам в текущем индексе (поэтапный, но еще не проведенный).
git show :file
См. gitrevisions (внимание мое):
<rev>:<path>, e.g. HEAD:README, :README, master:./README
Суффикс :
, за которым следует путь, называет пучок или дерево по заданному пути в древовидном объекте, названном частью до двоеточия. :path
(с пустой частью перед двоеточием) - это особый случай описанного ниже синтаксиса: контент, записанный в индекс по заданному пути.
Ответ 2
Обновление: ответ от грамотности содержит гораздо более аккуратное решение
Этот рецепт от jleedev отвечает на другой вопрос:
git cat-file blob $(git ls-files -s file | awk '{print $2}')
Возможно, вы захотите создать git alias для этого, если вы собираетесь использовать его часто.
Ответ 3
Вы можете сделать git diff --cached, но это не совсем то, что вы хотите.
git grep -h --cached ^ -- file
работает для меня.
Ответ 4
Просто взгляните на главный ответ на этот вопрос: Как показать изменения, которые были поставлены?
Опция --cached
- это то, что вы хотите.