Git command to show which specific files are ignored by .gitignore

后端 未结 9 1273
我在风中等你
我在风中等你 2020-11-22 05:07

I am getting my feet wet with Git and have the following issue:

My project source tree:

/
|
+--src/
+----refs/
+----...
|
+--vendor/
+----...
         


        
9条回答
  •  Happy的楠姐
    2020-11-22 05:54

    Here's how to print the complete list of files in the working tree which match patterns located anywhere in Git's multiple gitignore sources (if you're using GNU find):

    $ cd {your project directory}
    $ find . -path ./.git -prune -o -print \
    | git check-ignore --no-index --stdin --verbose
    

    It will check all the files in the current branch of the repository (unless you've deleted them locally).

    And it identifies the particular gitignore source lines, as well.

    Git continues to track changes in some files which match gitignore patterns, simply because those files were added already. Usefully, the above command displays those files, too.

    Negative gitignore patterns are also matched. However, these are easily distinguishable in the listing, because they begin with !.

    If you're using Windows, Git Bash includes GNU find (as revealed by find --version).

    If the list is long (and you have rev), you can display them by extension (somewhat), too:

    $ cd {your project directory}
    $ find . -path ./.git -prune -o -print \
    | git check-ignore --no-index --stdin --verbose \
    | rev | sort | rev
    

    For more details, see man find, man git-check-ignore, man rev, and man sort.

    The point of this whole approach is that Git (the software) is changing rapidly and is highly complex. By contrast, GNU's find is extremely stable (at least, in its features used here). So, anyone who desires to be competitive by displaying their in-depth knowledge of Git will answer the question in a different way.

    What's the best answer? This answer deliberately minimizes its reliance on Git knowledge, toward achieving the goal of stability and simplicity through modularity (information isolation), and is designed to last a long time.

提交回复
热议问题