Die*_*ego 245
如前所述,要从状态中排除只是使用:
git status -uno # must be "-uno" , not "-u no"
Run Code Online (Sandbox Code Playgroud)
如果您想要永久忽略当前未跟踪的文件,您可以从项目的根目录启动:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
Run Code Online (Sandbox Code Playgroud)
每次后续调用都git status将明确忽略这些文件.
更新:上面的命令有一个小缺点:如果你没有.gitignore文件,你的gitignore将忽略自己!发生这种情况是因为文件.gitignore在git status --porcelain执行之前创建.所以如果你还没有.gitignore文件,我建议使用:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
Run Code Online (Sandbox Code Playgroud)
这将创建完成一个子shell 之前的.gitignore创建文件.
命令解释因为我得到了很多选票(谢谢!)我想我最好解释一下这个命令:
git status --porcelain是用来代替git status --short因为手动状态"以易于解析的格式为脚本提供输出.这类似于短输出,但在git版本中保持稳定,无论用户配置如何." 所以我们既有可解析性又有稳定性;grep '^??'仅过滤以...开头的行??,根据git status手册,它们对应于未跟踪的文件;cut -c4- 删除每行的前3个字符,这只给出了未跟踪文件的相对路径;|符号是管道,这通过前面的命令为以下命令的输入的输出;>>和>符号是重定向运营商,这前一命令的输出附加到文件或覆盖/分别创建一个新文件,.另一种变体为那些喜欢谁使用sed,而不是grep和cut,还有一种方法:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
Run Code Online (Sandbox Code Playgroud)
poo*_*lie 48
如果要永久忽略这些文件,添加它们的简单方法.gitignore是:
git ls-files --others --exclude-standard >> .gitignore这将枚举未跟踪目录中的所有文件,这些文件可能是您想要的,也可能不是.
Ok *_*his 13
恕我直言,比接受的答案更好的是使用以下内容:
git config --local status.showUntrackedFiles no
当添加不在其中的新文件时,接受的答案不起作用.gitignore
Sno*_*ash 10
上述答案都不适合我。
就我而言,我希望永久忽略个人配置文件(git status -uno仅适用于一次)。
我是团队的一员,因此无法将其添加到.gitignore已签入的团队中。
Mu 的解决方案是将其添加到:
.git/info/exclude
Run Code Online (Sandbox Code Playgroud)
这就像您自己的个人.gitignore文件。
两种方式:
-uno使用参数git-status. 这是一个例子:
[jenny@jenny_vmware:ft]$ git status
# On branch ft
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
[jenny@jenny_vmware:ft]$ git status -uno
# On branch ft
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
或者您可以将文件和目录添加到.gitignore,在这种情况下它们将永远不会显示。