检查git中的重复文件(内容)?

时间:2011-04-25 20:54:38

标签: git path-finding duplicates

在我的'project / repo'中,我有两个MS Visual Studio项目,一个用于主代码,另一个用于测试。我有一些共同的文件(在复制和粘贴意义上),我想看/检查它们是哪些。

什么是正确的Git命令(或Gui菜单点击),看看我是否在整个repo树中使用了两次相同的内容blob?如果我已经正确阅读了所有教程,git应该有一个SHA1用于相同文件内容的两个副本并且已经知道它。我希望Git有一个查找并显示这些重复使用文件路径的命令。

最后,当有共同的祖先blob SHA1(但不是公共位置)时,我希望能够找出版本之间的差异。 [即在测试期间,一个版本会在另一个版本之前更新...]

我知道这样的副本不是最佳做法,但这是工作结束的方式: - (

我在Windows上有Msysgit和GitExtensions ...

1 个答案:

答案 0 :(得分:5)

您可以执行类似

的操作
git ls-tree -r HEAD

查看blob和文件。

如果您不想手动查看哪些是相同的blob:

git ls-tree -r HEAD |
    sort -t ' ' -k 3 |
        perl -ne '$1 && / $1\t/ && print "\e[0;31m" ; / ([0-9a-f]{40})\t/; print "$_\e[0m"'

来自:Git: Find duplicate blobs (files) in this tree