混帐:如何忽略所有目前未被追踪的文件吗?(git: How to ignore all presen

2019-06-26 08:53发布

有没有忽略一个Git仓库未跟踪的所有文件和文件夹的便捷方式?
(我了解.gitignore 。)

所以git status将再次提供一个清洁的结果。

Answer 1:

正如前面已经说过,从状态只排除使用:

git status -uno  # must be "-uno" , not "-u no"

如果你不是想永久忽略当前可以未跟踪文件,从您的项目,推出的根源:

git status --porcelain | grep '^??' | cut -c4- >> .gitignore

对每个后续的调用git status将明确地忽略这些文件。

更新 :上面的命令有一个小缺点:如果你没有.gitignore文件,但您的gitignore会忽略本身! 这是因为文件.gitignore在之前被创建git status --porcelain被执行。 所以,如果你没有.gitignore文件,但我建议使用:

echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore

这就造成了其之前完成一个子shell .gitignore创建文件。

命令解释 ,因为我得到了很多选票(谢谢!)我想,我会更好地解释命令一下:

  • git status --porcelain是用来代替git status --short因为手动状态“给在脚本的易于解析格式的输出,这是类似短输出,但仍将跨版本的Git稳定,不管用户配置“。 因此,我们有两个parseability和稳定性;
  • grep '^??' 滤波器仅开始的行?? ,其中,根据git的状态手册 ,对应于未跟踪文件;
  • cut -c4-删除每一行,这让我们只是未跟踪文件的相对路径的前3个字符;
  • | 符号是管道 ,这通过前面的命令为以下命令的输入的输出;
  • 所述>>>符号重定向运营商 ,这前一命令的输出附加到文件或覆盖/分别创建一个新文件,。

另一种变体对于那些谁喜欢用sed ,而不是grepcut ,还有一种方法:

git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore


Answer 2:

如果要永久忽略这些文件,一个简单的方法来增加他们.gitignore是:

  1. 更改到GIT树的根。
  2. git ls-files --others --exclude-standard >> .gitignore

这将枚举未经跟踪的目录,这可能是也可能不是你想要的是里面的所有文件。



Answer 3:

在发现它的手动

git status -uno



Answer 4:

-u no不表现出任何不分级的文件。 -uno工作需要的和不分级的展示,却隐藏着未被跟踪。



Answer 5:

方法有两种:

使用参数“-uno”到git的状态。 下面是一个例子:

[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)

或者,您可以添加文件和directires到的.gitignore,在这种情况下,他们将永远不会出现。



Answer 6:

如果你是不是类Unix的操作系统,这将在Windows上使用PowerShell工作

git status --porcelain | ?{ $_ -match "^\?\? " }| %{$_ -replace "^\?\? ",""} | Add-Content .\.gitignore

然而, .gitignore文件必须有一个新的空行,否则将文本追加到最后一行,不管它是否有内容。

这可能是一个更好的选择:

$gi=gc .\.gitignore;$res=git status --porcelain|?{ $_ -match "^\?\? " }|%{ $_ -replace "^\?\? ", "" }; $res=$gi+$res; $res | Out-File .\.gitignore



Answer 7:

如果你有很多的未跟踪文件,并且不希望“ gitignore ”所有的人,要注意的是,由于git的1.8.3(四月,22D 2013) , git status将提--untracked-files=no连如果您没有添加该选项摆在首位!

git status ”建议用户考虑使用--untracked=no选择,当时间过久。



文章来源: git: How to ignore all present untracked files?
标签: git gitignore