有没有办法使用像git ls-files
这样的命令来只显示未跟踪的文件?
我问的原因是因为我使用以下命令来处理所有已删除的文件:
git ls-files -d | xargs git rm
对于未跟踪的文件,我想要类似的东西:
git some-command --some-options | xargs git add
我能够找到git ls-files
的-o
选项,但这不是我想要的,因为它也显示了被忽略的文件。 我还能够提出以下长而丑陋的命令:
git status --porcelain | grep '^??' | cut -c4- | xargs git add
似乎我必须在这里使用更好的命令。 如果没有,我如何创建自定义git命令?
#1楼
git add -A -n
会做你想要的。 -A
将所有未跟踪文件到回购, -n
使它成为dry-run
,没有进行附加,但被赋予状态输出,列出了_将_被添加的每个文件。
#2楼
我认为这与原版海报意图相同:
git add .
#3楼
一切都很简单
要获取所有未跟踪文件的列表,请使用命令_git status_和选项_-u_ ( - untracked-files)
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,并将其放在路径中。