git:仅列出新文件

Bet*_*ide 39 git status

当我这样做时,git status我得到一个前缀为的文件列表new file:.我怎么才能得到这个清单?我想在一个小shell脚本的简单循环中处理这些文件.

and*_*ens 86

不要使用grep来解析git输出.Git几乎可以肯定你有内置的东西(除非你想要非常高级的东西).
您可以使用它git diff来显示更改.--name-only仅显示文件名.--diff-filter=A仅列出添加的文件.
如果要查看已添加到索引的新文件,请将其--cached省略.要看到两个差异HEAD.
命令如下所示:

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
Run Code Online (Sandbox Code Playgroud)

  • diff-filter实际上是走的路:) (3认同)
  • 非常不幸的是OP不接受这个答案,正如我的拙见,你是完全正确的.:) (3认同)
  • 三个命令中的第一个是正确的。第二个没有多大意义,因为文件仅在暂存时才被标记为“新”。第三个是错误的,因为它甚至没有列出索引中标记为“新”的文件。 (2认同)

Rom*_*om1 21

我会用类似的东西 git status --porcelain | grep "^A" | cut -c 4-


小智 17

您可以使用git status --short来获取文件列表.

  • 这不应该被忽视. (5认同)

Kei*_*lan 17

它可能更优雅,而不是解析"git status"的输出

git ls-files -o  --exclude-standard
Run Code Online (Sandbox Code Playgroud)

与此相关git status,ls-files将产生相对于您的工作目录的输出.

您可能希望包含以下--full-name选项:

git ls-files -o  --exclude-standard --full-name
Run Code Online (Sandbox Code Playgroud)