【问题标题】:How to tell if git has ever tracked file X如何判断 git 是否曾经跟踪过文件 X
【发布时间】:2011-09-24 05:39:09
【问题描述】:

我已尝试在谷歌上搜索此问题的解决方案,但尚未找到。

给定一个名为“/project”的工作目录,我试图找到一种方法来判断 git 是否曾经在存储库的历史记录中跟踪过一个名为“/project/x/y/fubar”的文件。

这可能吗?看起来应该已经有答案了,但我的 google-Fu 今天早上让我失望了。

编辑:How to tell if a file is git tracked (by shell exit code)? 可能重复

我不认为这个问题与这个问题相同,因为我试图获取信息的文件不能保证当前被 git 跟踪,并且在调用时可能不存在于工作目录中。该问题的答案似乎都在告诉您文件是否当前被 git 跟踪。请告诉我我是否错了,并且其中一种解决方案对于我的目标是可以接受的。

【问题讨论】:

    标签: git


    【解决方案1】:

    最简单的是git log --all -- x/y/fubar - 如果文件在那里,它会提供至少一个日志条目。

    【讨论】:

    • 然后将其输入wc -l 并检查返回值。
    • 要通过管道连接到 wc,您需要将 --oneline 添加到 git log 命令中。此外,如果您要从 log 命令管道输出,请不要向 git 添加分页器:git --no-pager log ...
    • 添加 --pretty=format: --name-only --diff-filter=A 会加快速度。
    • 有没有办法让它不区分大小写?
    【解决方案2】:

    更好的方法是:

    git log --all --pretty=format: --name-only --diff-filter=A | sort - | grep fubar
    

    从其他几个答案合并。

    【讨论】:

    • 这可能会慢很多
    【解决方案3】:

    这里有两个有用的别名:FindFile ff 和 FindFilewithCopies ffc

    # Find if one file ever had into repository
    ff = "!git log --pretty=format: --name-status --all -M -B | sort -u | grep $1   #"
    # The same as above but showing copied files
    ffc = "!git log --pretty=format: --name-status --all -C -M -B | sort -u | grep $1 #"
    

    您可以获得有关文件名和操作的信息。

    使用示例:

    $ git ff create
    A       database/migrations/2014_10_12_000000_create_users_table.php
    A       database/migrations/2014_10_12_100000_create_password_resets_table.php
    A       database/migrations/2015_05_11_200932_create_boletin_table.php
    A       database/migrations/2015_05_15_133500_create_usuarios_table.php
    D       database/migrations/2015_05_12_000000_create_users_table.php
    M       database/migrations/2015_05_11_200932_create_boletin_table.php
    R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php
    
    $ git ffc create
    A       database/migrations/2014_10_12_000000_create_users_table.php
    A       database/migrations/2014_10_12_100000_create_password_resets_table.php
    A       database/migrations/2015_05_11_200932_create_boletin_table.php
    A       database/migrations/2015_05_15_133500_create_usuarios_table.php
    C052    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_11_210246_create_boletin_nosend_table.php
    D       database/migrations/2015_05_12_000000_create_users_table.php
    M       database/migrations/2015_05_11_200932_create_boletin_table.php
    R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php
    

    (可能复制自:List all the files that ever existed in a Git repository

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 2017-04-01
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      相关资源
      最近更新 更多