如何使用git检索所有未被删除的文件?

3

我正在使用 git ls-files 命令列出 Git 代码库中所有被 Git 索引的文件,但是结果中显示了一些已删除的文件。

我正在寻找一个 Git 命令,只列出 Git 代码库中未被删除的文件。

2个回答

2

阅读文档并设置所需标志。

https://git-scm.com/docs/git-ls-files

您正在寻找这个内容:

git ls-files -o --exclude-standard

-c / - -cached
显示缓存的文件在输出中(默认)

-d / --deleted
显示已删除的文件在输出中

-m / --modified
显示修改过的文件在输出中

-o / --others
显示其他(即未跟踪)文件在输出中

-i / --ignored
仅显示被忽略的文件在输出中。当显示索引中的文件时,仅打印符合排除模式的文件。当显示“其他”文件时,仅显示符合排除模式的文件。


另一种选择是使用git diffgit-filter

git diff --name-only --diff-filter=A --cached 

--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]

Select only files that are 
  Added (A)   
  Copied (C)   
  Deleted (D)   
  Modified (M)   
  Renamed (R)

1
谢谢您的回复,我尝试阅读文档,但不知何故无法找出如何显示未删除的文件。 - Rabe
这里是代码:git ls-files -o --exclude-standard - CodeWizard
我觉得我没有很清楚地解释我的问题。我想列出在仓库中未被删除的所有文件。 - Rabe
让我看看是否理解您的意思,您想立即列出存储库中的所有文件。它们如何被删除?您可以在暂存区中查看已删除的文件。我不明白您想做什么。如何在存储库中有已删除的文件? - CodeWizard
2
是的,例如当我使用git ls-files列出仓库中的所有文件时,它会显示一些已经不存在于仓库文件夹中的文件。 - Rabe

2
这个脚本应该打印所有修改过和未跟踪的文件,然后排除已删除的文件(如果存在)。 git ls-files -o -m --exclude-standard | grep -vE "^$(git ls-files -d | paste -sd "|" -)$" 说明:
- git ls-files --other - 显示输出中的其他(即未跟踪)文件 - git ls-files --modified - 显示输出中的修改过的文件 - git ls-files - 显示输出中的已删除的文件 - git ls-files --exclude-standard - 添加标准Git排除:每个目录中的.git/info/exclude、.gitignore以及用户的全局排除文件。 - grep -vE PATTERN - 根据给定的模式从输出中排除 - paste -sd "|" - 将输出按行用'|'符号连接

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接