Git 暂存文件列表
Posted
技术标签:
【中文标题】Git 暂存文件列表【英文标题】:Git list of staged files 【发布时间】:2016-02-10 04:34:46 【问题描述】:我使用git add
暂存了很多文件,现在我想查看我已暂存的所有文件,没有未跟踪 文件或已更改但未暂存 文件。
我该怎么做?当使用git diff --cached
时,我可以看到我刚刚上演的内容的变化。然后我尝试使用git status --cached
,但不幸的是--cached
不适用于git status
。
【问题讨论】:
只需键入git status
即可为您提供暂存文件列表、已修改但未暂存文件列表以及未跟踪文件列表。
类似:***.com/questions/1587846/…
@houtanb, git status
向您展示差异。 (它不会显示所有暂存文件)。
【参考方案1】:
您可以尝试使用git ls-files -s
【讨论】:
这似乎列出了所有跟踪的文件(暂存或未暂存),而不是暂存 文件(问题是关于)。这不能回答以下问题:“查看我暂存的所有文件......没有......更改但未暂存的文件。”)。这个答案是明显错误的。当它不回答问题(它回答其他问题)时,为什么要投票? 这确实不回答了这个问题,而且是完全错误的。它回答了其他一些问题。请问可以删除吗?提前致谢。 放大信息:***.com/questions/28159325/…【参考方案2】:执行此操作的最佳方法是运行以下命令:
git diff --name-only --cached
当您查看手册时,您可能会发现以下内容:
--name-only
Show only names of changed files.
在手册的example 部分:
git diff --cached
Changes between the index and your current HEAD.
将changes between the index and your current HEAD
和Show only names of changed files.
组合在一起
更新:--staged
在最近的 git 版本中也可用作上述 --cached
的别名。
【讨论】:
这真的很有用,因为它允许您获取文件名列表,然后(在我的情况下)您可以在 pre-commit 挂钩中通过管道传输到 linter。 如果您使用git add -N [files]
添加文件,这也包括那些文件,即使它们实际上还没有准备好提交。因此,它并不是我们想要的预提交钩子。
re "最后一次提交";误导。最好说git diff --cached
是git diff --cached head
的缩写
这很棒。如何让它显示相对于我当前工作目录而不是相对于存储库根目录的路径?以上是关于Git 暂存文件列表的主要内容,如果未能解决你的问题,请参考以下文章