有没有办法使用像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,并将其放在路径中。