當我做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