有没有忽略一个Git仓库未跟踪的所有文件和文件夹的便捷方式?
(我了解.gitignore
。)
所以git status
将再次提供一个清洁的结果。
有没有忽略一个Git仓库未跟踪的所有文件和文件夹的便捷方式?
(我了解.gitignore
。)
所以git status
将再次提供一个清洁的结果。
正如前面已经说过,从状态只排除使用:
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
,而不是grep
和cut
,还有一种方法:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
如果要永久忽略这些文件,一个简单的方法来增加他们.gitignore
是:
git ls-files --others --exclude-standard >> .gitignore
这将枚举未经跟踪的目录,这可能是也可能不是你想要的是里面的所有文件。
在发现它的手动
git status -uno
-u no
不表现出任何不分级的文件。 -uno
工作需要的和不分级的展示,却隐藏着未被跟踪。
方法有两种:
使用参数“-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,在这种情况下,他们将永远不会出现。
如果你是不是类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
如果你有很多的未跟踪文件,并且不希望“ gitignore
”所有的人,要注意的是,由于git的1.8.3(四月,22D 2013) , git status
将提--untracked-files=no
连如果您没有添加该选项摆在首位!
“
git status
”建议用户考虑使用--untracked=no
选择,当时间过久。