我必须仅按文件名比较两个不同文件夹中的所有文件。 到目前为止我刚刚找到了:
git diff --name-only
选项,但是这个显示了代码进行更改的文件。我想知道的是,哪些文件是从较新的文件夹中删除的,以及它们的名称是什么。
答案 0 :(得分:0)
我希望您正在寻找两次提交之间更改的文件列表:
使用--name-status
,它与--name-only
相同,加上已更改文件的状态:
git diff --name-status HEAD~5 HEAD~3
了解最近一次提交与第三次最新提交之间的差异。
这将提供文件的历史记录。
答案 1 :(得分:0)
我认为我对你的场景有些不了解,因为它听起来并不像git是这项任务最直接的工具。[1]也就是说,如果您有一个显示已更改文件列表的git diff
命令,则可以添加--diff-filter
选项来限制您看到的更改类型。
git diff --diff-filter=AD --name-only ...
您也可能希望对此类案例使用--no-renames
选项,这样您只需获取一个显示或消失的文件名列表,而无需git尝试猜测意图。
正如您所注意到的,--name-only
选项并不意味着diff只比较名称;它只表示git只会显示名称。您也可以使用--name-status
代替--name-only
,然后它会告诉您哪种类型的更改适用于每个路径(因此您可以查找A
和D
更改)。
[1]:我的意思是,听起来你说你在一个时间点有两个不同的文件夹,想要比较它们。虽然git很擅长随着时间的推移显示对目录树的更改,但它并不是一个通用的差异工具。
有什么问题ls dir1 > filelist-1.txt
ls dir2 > filelist-2.txt
diff filelist-1.txt filelist-2.txt
代替?