git: list new files only

前端 未结 6 1607
眼角桃花
眼角桃花 2020-12-23 13:54

When I do a git status I get a list of files prefixed with new file: . How can I get only this list? I want to process this files in a simple loop

相关标签:
6条回答
  • 2020-12-23 14:08

    List of new files or to get files to be added to git, can be got using git status and grep command like git status -s | grep ??

    root@user-ubuntu:~/project-repo-directory# git status -s | grep ??
     ?? src/.../file1.js
     ?? src/.../file2.js
     ?? src/.../file3.js
     ....
    
    0 讨论(0)
  • 2020-12-23 14:09

    I would use something like git status --porcelain | grep "^A" | cut -c 4-

    0 讨论(0)
  • 2020-12-23 14:13

    You can use git status --short to get the list of files.

    0 讨论(0)
  • 2020-12-23 14:13
    git status | grep "new file:" | cut -c 14-
    
    git status | grep "modified:" | cut -c 14- 
    
    0 讨论(0)
  • 2020-12-23 14:21

    The commands below no longer give the expected results, I may originally also have made some mistakes. Please double-check your output and the options you are using. Nevertheless: The basic tenet of using diff-filter should still hold true.

    Don't use grep to parse git output. Git almost certainly has the things you are looking for built-in (except if you are going for really advanced stuff).
    You can use git diff to show the changes. --name-only shows only the filenames. --diff-filter=A lists only the added files.
    If you want to see new files you have already added to the index use --cached, otherwise omit it. To see both diff to HEAD.
    The commands look like this:

    git diff --name-only --diff-filter=A --cached # All new files in the index  
    git diff --name-only --diff-filter=A          # All files that are not staged  
    git diff --name-only --diff-filter=A HEAD     # All new files not yet committed
    
    0 讨论(0)
  • 2020-12-23 14:26

    Instead of parsing the output of "git status", it is probably more elegant to use

    git ls-files -o  --exclude-standard
    

    As with git status, ls-files will produce output relative to your currrent working directory.

    You may wish to include the --full-name option:

    git ls-files -o  --exclude-standard --full-name
    
    0 讨论(0)
提交回复
热议问题