有沒有辦法使用像git ls-files
這樣的命令來只顯示未跟蹤的文件? git
我問的緣由是由於我使用如下命令來處理全部已刪除的文件: spa
git ls-files -d | xargs git rm
對於未跟蹤的文件,我想要相似的東西: code
git some-command --some-options | xargs git add
我可以找到git ls-files
的-o
選項,但這不是我想要的,由於它也顯示了被忽略的文件。 我還可以提出如下長而醜陋的命令: it
git status --porcelain | grep '^??' | cut -c4- | xargs git add
彷佛我必須在這裏使用更好的命令。 若是沒有,我如何建立自定義git命令? io
git add -A -n
會作你想要的。 -A
將全部未跟蹤文件到回購, -n
使它成爲dry-run
,沒有進行附加,但被賦予狀態輸出,列出了將被添加的每一個文件。 class
我認爲這與原版海報意圖相同: sed
git add .
file
一切都很簡單 grep
要獲取全部未跟蹤文件的列表,請使用命令git status和選項-u ( - untracked-files) command
git status -u
在尋找可能添加的文件時。 git show
的輸出就是這樣,但它還包含不少其餘內容。 如下命令對於獲取相同的文件列表很是有用,但沒有其餘全部內容。
git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'
當在管道中組合以查找與特定模式匹配的文件而後將其傳遞給git add
時,這很是有用。
git status --porcelain | grep "^?? " | sed -e 's/^[?]* //' | \ egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add
若是您只想刪除未跟蹤的文件,請執行如下操做:
git clean -df
若是您還想包含特別忽略的文件,請將x
添加到該文件中。 我用git clean -dfx
全天不少 。
您能夠經過編寫一個名爲git-whatever
的腳原本建立自定義git,並將其放在路徑中。