在阅读Git pre-commit hook : changed/added files之后,我产生了以下问题:
假设我有一个文件,其中包含已暂存和未暂存的更改,如何在暂存后显示文件内容的预览?
示例:
echo "foo" >> file
git add file
echo "bar" >> file
期望输出:
[previous contents of file]
foo
在阅读Git pre-commit hook : changed/added files之后,我产生了以下问题:
假设我有一个文件,其中包含已暂存和未暂存的更改,如何在暂存后显示文件内容的预览?
示例:
echo "foo" >> file
git add file
echo "bar" >> file
期望输出:
[previous contents of file]
foo
使用:
前缀来访问当前索引中的对象(已暂存但尚未提交)。
git show :file
参见gitrevisions(使用术语“stage 0”表示“正常”索引内容):
:[<n>:]<path>, e.g. :0:README, :README
冒号,可选后跟阶段号(0到3)和冒号,再跟路径,表示索引中给定路径处的blob对象。缺少阶段号(及其后面的冒号)表示阶段0条目。在合并期间,阶段1是公共祖先,阶段2是目标分支的版本(通常是当前分支),阶段3是正在合并的分支的版本。
HEAD:README
显示更改前的文件。:README
仅显示已暂存更改的文件。是否有任何方法可以仅显示未暂存更改的文件?我在链接的文档中没有看到任何指示。 - JD Isaacksgit show :file
没有成功。这是正常的吗?我不得不退回到 git ls-files -s <file>
然后 git cat-file -p <objHash>
。 - Christopher King更新:来自grawity的答案提供了更简洁的解决方案
这个方法来自jleedev对另一个问题的回答:
git cat-file blob $(git ls-files -s file | awk '{print $2}')
如果您经常使用它,您可能希望为此创建一个git别名。
你可以使用 git diff --cached 命令,但这并不完全符合你的需求。
git grep -h --cached ^ -- file
对我来说很有效。
只需查看此问题的顶部答案:如何显示已暂存的更改?
--cached
选项是您想要的。
cat
命令查看该文件的外观方式。 - user456814
cat file
会显示出bar
,这不是我想要的结果。 - user123444555621foo
,然后是一个换行符,然后是bar
。http://i.imgur.com/uGwgq.png - Delan Azabani