列出 git 中提交触及的所有文件

List all files touched by commits in git

如何列出两次提交之间某处“接触”的所有文件?我正在寻找类似于 git diff COMMIT1..COMMIT2 --name-only 但包括后来修改和还原的文件的命令。

例如,假设我有一个包含一系列提交(线性历史)的存储库:C0<-C1<-C2<-C3<-C4。提交 C1 引入了一个新文件 F,然后提交 C3 将其从存储库中删除。我正在寻找一个命令,给定 C0 和 C4,它会告诉我在两者之间的某处有一个文件 F。即使在 C0 和 C4 中没有这样的文件。因此git diff根本不会提到文件F。

git diff ref1 ref2 只考虑给定的提交,是的,但是 git log 会找到缺少的步骤并列出每个步骤的文件,sort 会汇总这些文件:

git log --pretty="" --name-only COMMIT1..COMMIT2 | sort -u

尝试git log找到缺失的步骤 可能是 git log --pretty=format:"" --name-only commit1..commit2 | sort -u