如何获取git存储库中每个修订的文件清单?

时间:2012-01-26 22:12:24

标签: windows git version-control

我有一个在Microsoft Windows上创建的git存储库。 Microsoft Windows具有不区分大小写的文件系统。检查此存储库的人员对其文件名的大小写并不十分谨慎。这意味着相同的目录或文件有时会以两个不同的名称显示。

我的意思是解决这个问题。但是为了真正解决它,我必须处理它。

是否有快速简单的方法来获取每个修订版的文件列表?

我需要这个以便找出哪些修订版(如果有的话)在两个不同的名称下具有相同的文件,因此我可以决定修复此类案例的策略。这意味着我需要尽快集中获取这些信息,以便分析耗费合理的时间。

2 个答案:

答案 0 :(得分:3)

获得此功能的一种方法是ls-tree

git ls-tree -r --name-only <commit>

(请注意,这会查看与当前目录对应的树的部分,因此您应该从repo的顶级运行它,或者提供--full-tree选项。)

这基本上是即时的,因为Git所要做的就是以递归方式检查树;它甚至不必查看文件的内容。

我不确定您将如何使用文件名列表来检测两个不同名称下的同一文件。如果您只是想要在不区分大小写的文件系统中查找相同的文件名,那么您只需要文件名列表。

但是,如果您认为文件实际上可能具有相同的内容,则可以删除--name-only,以便您还可以看到所有文件的SHA1,并且可以通过查找重复文件找到相同的文件散列。

答案 1 :(得分:-1)

你可以运行这样的东西:

git log --name-only --pretty="format:%H"

此命令将显示sha1以及每个修订版本的已更改文件列表。