当我做git status
时,我得到一个前缀为new file:
的文件列表。我怎样才能得到这个清单?我想通过一个简单的循环在一个小shell脚本中处理这些文件。git:仅列出新文件
回答
我会使用类似git status --porcelain | grep "^A" | cut -c 4-
几年后,但这不再适用于我(“git status”的输出可能已更改)。 **编辑:** Bah。没有添加/承诺它。经得起时间考验! – Hendy
不要使用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
差异过滤器实际上是要走的路:) –
很不幸,OP不接受这个答案,就像我愚蠢的看法,你是完全正确的。 :) –
而不是解析的“混帐地位”的输出,它可能是更优雅的使用
git ls-files -o --exclude-standard
与git status
,ls-files
会产生相对于输出您的当前工作目录。
您可能希望包括--full-name
选项:
git ls-files -o --exclude-standard --full-name
OP要求列出新文件,这个答案不需要任何其他程序管道输出到。我发现在Mac上git diff并没有像预期的那样工作,但是这样做:) –
这显然是赢家。它适用于包含所有新文件的新目录。 – Ali
但是请注意,这不适用于子目录。 最后我用'混帐diff'使我的脚本工作从库中的每个目录: '$ git的差异--name只--diff过滤= A HEAD' –
的新文件列表或获得的文件被添加到git的,可以使用类似git status -s | grep ??
[email protected]:~/project-repo-directory# git status -s | grep ??
?? src/.../file1.js
?? src/.../file2.js
?? src/.../file3.js
....
git的地位和grep命令来了
git status | grep "new file:" | cut -c 14-
git status | grep "modified:" | cut -c 14-
- 1. 仅在git中更新文件权限
- 2. GIT - 如何仅在两个分支之间列出新添加的文件
- 3. git:仅列出针对所有窗口修改的文件
- 4. 如何在git中仅列出自动合并文件
- 5. git识别文件出.git文件夹
- 6. git:如何列出新文件以添加它们?
- 7. GIT - 如何列出文件类型
- 8. 仅在C#中列出子文件夹?
- 9. 仅列出目录中的文件?
- 10. 仅列出目录中的文件夹
- 11. PHP opendir()仅列出文件夹
- 12. Rails/Phusion Passenger仅列出文件
- 13. 仅观看列出的文件夹PM2
- 14. 仅列出目录中的文件夹
- 15. 仅列出文件夹文件而不是文件
- 16. 如何仅使用git分阶段创建新文件?
- 17. git仅重新添加那些已经上传的文件
- 18. 查找仅给出文件版本的Git commit
- 19. 虽然全局忽略,但git会在新存储库中列出新文件
- 20. Git仅记录文件的一部分?
- 21. git:仅合并文件选择
- 22. git grep - 但仅限于索引中的新文件或修改文件
- 23. 从git获取新文件和删除文件的列表
- 24. 如何仅提交外部文件中列出的文件名
- 25. 仅列出文件夹中的图像文件
- 26. “git checkout”不更新文件
- 27. Git add -p但新文件
- 28. git删除新文件
- 29. 仅处理新文件
- 30. 仅向zip文件添加新文件
你试过'grep'吗? 'git status | grep新文件“。 – Zeta
是的,但这并不能让我获得纯文件名。 – BetaRide
我宁愿使用'git ls-files --other --exclude-standard'(http://stackoverflow.com/a/2299448/6309) – VonC