我试图列出分支历史记录中任何一点存在但随后被删除且不存在于该分支的最新提交中的所有文件的名称。
其他类似(但不相同)问题的答案表明:
git log --all --pretty=format: --name-only --diff-filter=D
但这列出了分支历史记录中所有提交的所有单个文件删除操作,而不考虑文件是否被重新添加。
我经常使用 git ,这很危险,而且我的术语可能有点偏差,所以这里是我想要做的一个具体例子:
git init
:: add three files
echo aaa > aaa.txt
echo bbb > bbb.txt
echo ccc > ccc.txt
git add --all
git commit -m "initial commit"
:: delete aaa.txt, bbb.txt
del aaa.txt
del bbb.txt
git add --all
git commit -m "delete aaa.txt, bbb.txt"
:: re-add aaa.txt
echo zzz > aaa.txt
git add --all
git commit -m "re-add aaa.txt"
我正在尝试弄清楚我需要列出什么命令bbb.txt
- 我不在乎它aaa.txt
在某个时候被删除,因为它后来被重新添加,所以它当前存在于分支的尖端。
我也不关心文件的内容,只关心“丢失”文件的名称/路径。
具体来说,我希望这个假设命令的输出为:
bbb.txt
如果输出还可以列出“丢失”文件被删除的最新提交,这是一个额外的好处,但不是必需的。