List all the files that ever existed in a Git repository

后端 未结 4 504
夕颜
夕颜 2020-11-30 17:05

Do you have a clean way to list all the files that ever existed in specified branch?

相关标签:
4条回答
  • 2020-11-30 17:44

    This does the right thing for checking if a filename was ever present in the repo not just on the current branch.

    git log --all --pretty=format: --name-only --diff-filter=A | sort - | grep fubar
    
    0 讨论(0)
  • 2020-11-30 17:53

    Here is two useful alias: FindFile ff and 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 #"
    

    You get information about file names and operations with them.

    Sample use:

    $ 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
    
    0 讨论(0)
  • 2020-11-30 17:55

    You can run git-log --name-status, which echoes something like:

    commit afdbbaf52ab24ef7ce1daaf75f3aaf18c4d2fee0
    Author: Your Name <your@email.com>
    Date:   Tue Aug 12 13:28:34 2008 -0700
    
        Added test file.
    
    A       test
    

    Then extract files added:

    git-log --name-status | sed -ne 's/^A[^u]//p' | sort -u
    
    0 讨论(0)
  • 2020-11-30 17:56

    This is a simplified variation of Strager's solution:

    git log --pretty=format: --name-status | cut -f2- | sort -u
    

    Edit: Thanks to Jakub for teaching me a bit more in the comments, this version has a shorter pipeline and gives git more opportunity to get things right.

    git log --pretty=format: --name-only --diff-filter=A | sort -u
    
    0 讨论(0)
提交回复
热议问题