jny*_*len 322 git git-status git-stage git-ls-files git-rm
有没有办法使用命令git ls-files,只显示未跟踪的文件?
我问的原因是因为我使用以下命令来处理所有已删除的文件:
git ls-files -d | xargs git rm
Run Code Online (Sandbox Code Playgroud)
对于未跟踪的文件,我想要类似的东西:
git some-command --some-options | xargs git add
Run Code Online (Sandbox Code Playgroud)
我能够找到-o选项git ls-files,但这不是我想要的,因为它也显示了被忽略的文件.我还能够提出以下长而丑陋的命令:
git status --porcelain | grep '^??' | cut -c4- | xargs git add
Run Code Online (Sandbox Code Playgroud)
似乎我必须在这里使用更好的命令.如果没有,我如何创建自定义git命令?
tak*_*hin 506
要列出未跟踪的文件,请尝试:
git ls-files --others --exclude-standard
Run Code Online (Sandbox Code Playgroud)
如果你需要输出到输出xargs,那么使用git ls-files -z和思考空格是明智的xargs -0:
git ls-files -z -o --exclude-standard | xargs -0 git add
Run Code Online (Sandbox Code Playgroud)
添加未跟踪文件的好别名:
au = !git add $(git ls-files -o --exclude-standard)
Run Code Online (Sandbox Code Playgroud)
编辑:供参考:git-ls-files
Dus*_*tin 70
如果您只想删除未跟踪的文件,请执行以下操作:
git clean -df
Run Code Online (Sandbox Code Playgroud)
x如果您还想包含特别忽略的文件,请添加到该文件中.我用git clean -dfx一个很多全天.
您可以通过编写一个被调用的脚本git-whatever并将其放在路径中来创建自定义git .
小智 48
git add -A -n会做你想做的.-A将所有未跟踪文件到回购,-n使得它dry-run不执行附加,但被赋予状态输出列出每个文件将被添加.
you*_*ayy 27
接受的答案在带有空格的文件名上崩溃.我无法评论它(到目前为止的stackoverflow得分低),而我现在还不确定如何更新alias命令,所以我将把改进的版本放在这里:
git ls-files -z -o --exclude-standard | xargs -0 git add
Run Code Online (Sandbox Code Playgroud)
小智 25
一切都很简单
要获取所有未跟踪文件的列表,请使用命令git status和选项-u( - untracked-files)
git status -u
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老问题,但在列出未跟踪的文件方面,我想我会添加另一个也列出未跟踪文件夹的文件:
您可以将 git clean 操作与 -n (dry run) 一起使用,以通过以下方式向您显示它将删除的文件(包括 .gitignore 文件):
git clean -xdn
这具有显示所有文件和所有未跟踪的文件夹的优点。参数:
x - 显示所有未跟踪的文件(包括被 git 和其他人忽略的文件,如构建输出等...)d - 显示未跟踪的目录n- 最重要的是!- 空运行,即实际上不删除任何内容,只需使用清理机制来显示结果。这样做可能有点不安全,以防您忘记-n. 所以我通常在 git config 中给它起别名。
我之前检查过的所有答案都会列出要提交的文件。这是一个简单易用的解决方案,仅列出尚未在存储库中且不受.gitignore.
git status --porcelain | awk '/^\?\?/ { print $2; }'
Run Code Online (Sandbox Code Playgroud)
或者
git status --porcelain | grep -v '\?\?'
Run Code Online (Sandbox Code Playgroud)
小智 6
在寻找可能添加的文件时.输出可以git show做到这一点,但它还包括很多其他的东西.以下命令对于获取相同的文件列表非常有用,但没有其他所有内容.
git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'
Run Code Online (Sandbox Code Playgroud)
当在管道中组合以查找与特定模式匹配的文件然后将其连接到时,这非常有用git add.
git status --porcelain | grep "^?? " | sed -e 's/^[?]* //' | \
egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add
Run Code Online (Sandbox Code Playgroud)