Git:只列出“untracked”文件(也是自定义命令)

有没有办法使用像git ls-files这样的命令只显示未跟踪的文件?

我问的原因是因为我使用以下命令来处理所有删除的文件:

 git ls-files -d | xargs git rm 

我想为未跟踪的文件类似的东西:

 git some-command --some-options | xargs git add 

我能find-o选项来git ls-files ,但这不是我想要的,因为它也显示被忽略的文件。 我也能够拿出以下冗长难看的命令:

 git status --porcelain | grep '^??' | cut -c4- | xargs git add 

似乎有一个更好的命令,我可以在这里使用。 如果没有,我该如何创build自定义的git命令?

要列出未跟踪的文件,请尝试:

 git ls-files --others --exclude-standard 

用于添加未跟踪文件的好别名:

 au = !git add $(git ls-files -o --exclude-standard) 

编辑:供参考: git-ls-files

如果您只想删除未跟踪的文件,请执行以下操作:

 git clean -df 

如果你还想添加特定的忽略文件。 我一整天都在使用git clean -dfx

你可以通过编写一个名为git-whatever的脚本来创build自定义的git,并将其放在你的path中。

git add -A -n会做你想做的。 -A将所有未跟踪的文件添加到回购库中, -n使其处于dry-run状态,而不执行添加,但状态输出列出了添加的每个文件。

接受的答案崩溃的文件名与空间。 我不能评论(到目前为止,低stackoverflow得分),我在这一点上不知道如何更新别名命令,所以我会把改进版本在这里:

 git ls-files -z -o --exclude-standard | xargs -0 git add 

一切都非常简单要获得所有未受破坏的文件的列表使用命令git状态与选项-u(–untracked文件)

git status -u

查找可能添加的文件时。 git show的输出做到了,但是它也包含了很多其他的东西。 下面的命令对于获取相同的文件列表是有用的,但是没有其他的东西。

  git status --porcelain | grep "^?? " | sed -e 's/^[?]* //' 

在stream水线中find匹配特定模式的文件,然后将其传送到git add时,这很有用。

 git status --porcelain | grep "^?? " | sed -e 's/^[?]* //' | \ egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add 

我认为这和原来的海报是一样的:

git add .

Interesting Posts