【问题标题】:Checking for duplicate file (contents) in git?检查git中的重复文件(内容)?
【发布时间】:2011-04-25 20:54:38
【问题描述】:

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

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

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

我知道有这样的重复不是最佳做法,但这是工作的最终方式:-(

我在 Windows 上有 Msysgit 和 GitExtensions...

【问题讨论】:

    标签: git path-finding duplicates


    【解决方案1】:

    你可以做类似的事情

    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

    【讨论】:

    • 我会试一试..我想我明白了..当我将这三行粘贴到 Git Bash (在 Windows 中的 repo 目录顶部打开)
    • 我有点惊讶它不能作为短命令或 gui 操作使用。我希望很多人从“这里”开始(如“如果我是你,我不会从这里开始”)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2019-11-22
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    相关资源
    最近更新 更多