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