Git:仅列出“未跟踪”文件(也是自定义命令)

有没有办法使用像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


#1楼

git add -A -n会作你想要的。 -A将全部未跟踪文件到回购, -n使它成为dry-run ,没有进行附加,但被赋予状态输出,列出了被添加的每一个文件。 class


#2楼

我认为这与原版海报意图相同: sed

git add . file


#3楼

一切都很简单 grep

要获取全部未跟踪文件的列表,请使用命令git status选项-u ( - untracked-files) command

git status -u

#4楼

在寻找可能添加的文件时。 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

#5楼

若是您只想删除未跟踪的文件,请执行如下操做:

git clean -df

若是您还想包含特别忽略的文件,请将x添加到该文件中。 我用git clean -dfx全天不少

您能够经过编写一个名为git-whatever的脚原本建立自定义git,并将其放在路径中。

相关文章
相关标签/搜索