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 HEADShow only names of changed files. 组合在一起

更新:--staged 在最近的 git 版本中也可用作上述 --cached 的别名。

【讨论】:

这真的很有用,因为它允许您获取文件名列表,然后(在我的情况下)您可以在 pre-commit 挂钩中通过管道传输到 linter。 如果您使用git add -N [files] 添加文件,这也包括那些文件,即使它们实际上还没有准备好提交。因此,它并不是我们想要的预提交钩子。 re "最后一次提交";误导。最好说git diff --cachedgit diff --cached head 的缩写 这很棒。如何让它显示相对于我当前工作目录而不是相对于存储库根目录的路径?

以上是关于Git 暂存文件列表的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 git commit 中的文件列表? [复制]

如何使用 JGit 获取提交的文件列表

git 常用命令

git的理论基础

前端开发环境前端使用GIT管理代码仓库需要掌握的几个必备技巧和知识点总结

git/maven常用命令