我git ls-files
在脚本中使用来收集 git 跟踪的所有文件。不幸的是,如果您rm
的文件(而不是git rm
)它不再存在于文件系统中,但它仍将由git ls-files
所以问题是:是否有一种简单而有效的方法可以从git ls-files
输出本身或通过事后过滤(使用例如bash)排除文件系统上不再存在的文件?就像是
git ls-files --existing-only
背景:我想创建一个 CMake 虚拟目标,它包含项目目录中的所有文件(即由 git 跟踪)。我使用类似的东西
execute_process(
COMMAND bash -c "cd ${CMAKE_SOURCE_DIR}; git ls-files"
OUTPUT_VARIABLE ADDITIONAL_PROJECT_FILES
)
生成文件列表。但不幸rm
的是 ing 一个文件并且尚未暂存更改将导致错误,因为 CMake 无法再找到该文件..
更新:在我的编辑之前,我正在谈论git rm
ing 一个文件 - 这将由git ls-files
. 但问题仍然存在:如果有人删除了一个文件(不使用 git)git ls-files
将列出它(我遇到了麻烦)。