回答
正如前面已经说过,从状态只排除使用:
git status -uno # must be "-uno" , not "-u no"
如果你不是想永久不理你能目前未跟踪的文件,从您项目的根源,发布:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
之后每次调用git status
都会明确忽略这些文件。
UPDATE:上述命令有一个小缺点:如果你还没有.gitignore
文件,你的gitignore会忽略它自己!发生这种情况是因为在执行git status --porcelain
之前创建了文件.gitignore
。所以,如果你没有一个.gitignore
文件但我建议使用:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
这将创建完成创建.gitignore
文件前子shell。
命令解释,因为我得到了很多选票(谢谢!)我想我最好解释的命令一下:
git status --porcelain
使用的git status --short
因为manual状态改为“为脚本提供易于解析的格式输出,这与短输出类似,但在git版本中保持稳定并且不管用户配置如何。“因此,我们有两个parseability和稳定性;grep '^??'
滤波器仅开始的行??
,其中,根据所述git status manual,对应于未跟踪文件;cut -c4-
移除每一行,这使的前3个字符我们只是相对路径未跟踪文件;- 的
|
符号pipes,其前一个命令的输出传递到下面的命令的输入; - 的
>>
和>
符号redirect operators,其附加的输出的公关evious命令分别覆盖/创建一个新文件。
另一种变体为那些喜欢谁using sed
代替grep
和cut
,还有一种方法:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
如果我没有达到我的f#$%投票限制,我肯定会++这个。 – sjas 2013-02-28 18:36:45
'cut -c4-'**删除每行的前4个字符,这给我们提供了未跟踪文件的相对路径; **号'-c'标记要删除的列号列表的开始。并且'4-'*选择*从第4列到结尾的行,从而切换第1-3列。所以你的cut命令实际上会删除每行的前3个字符。如果你从一个git状态行中删除了4个字符,例如这里的这个文件:'? app/views/static_pages/contact.html.erb',你会删除'app'的第一个字母。所以命令是正确的,但解释是错误的。 – 7stud 2014-09-10 21:03:46
@ 7stud:谢谢你,你说的对,我写错了4。我已经解决了答案。 – Diego 2014-09-11 10:17:43
两种方式:
将参数“-uno”用于git-status。这里有一个例子:
[[email protected]_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)
[[email protected]_vmware:ft]$ git status -uno
# On branch ft
nothing to commit (working directory clean)
或者,您可以添加文件和directires到的.gitignore,在这种情况下,他们将永远不会出现。
编辑“.gitignore”作为'git status |猫>> temp && vim temp'。然后编辑该文件,以便删除前几行和最后一行,并在后面追加'#'和空格。然后'cat temp >> .gitignore && rm temp'。如果以前没有'.gitignore','mv temp .gitignore'会做。丑陋的东西,但比手动更新'.gitignore'更好。 – sjas 2012-07-18 13:53:34
这个答案不正确。正确答案是'-uno'。如果使用'-u no',它相当于'no -u' - 它会在名为'no'(可能不存在)的文件上执行一个状态并使用默认的'-u'模式。即它相当于'git status no' – 2016-03-01 10:50:56
发现它在the manual
git status -uno
那么如果每个人都会在发布前RTFM,我们都不会得到任何代表:-) – 2012-07-18 13:43:15
但是这篇文章没有回答这个问题。 RTQ似乎更合适。 – 2014-02-19 18:33:04
@ Sridhar-Sarnobat我的回答回答了我的问题,所以我不明白你想告诉的是什么? – sjas 2015-04-30 11:39:09
如果你有很多未跟踪文件,并且不希望“ gitignore
“所有这些,请注意,因为git 1.8.3 (April, 22d 2013),git status
会提及--untracked-files=no
,即使您并未在第一位添加该选项!
“
git status
”建议用户在需要太长时间时使用--untracked=no
选项进行调查。
-u no
也不显示未保存的文件。 -uno
按需要工作并显示未分离,但隐藏未跟踪。
即使这样也不完全正确。 'git status -u X'等同于'git status X -u'('X'不是'-u'的参数)。这又相当于'git status X'(因为没有参数的'-u'是默认的'-u')。因此,它只是文件'X'上的git-status。所以,如果'X'是'no',它只会尝试在名为'no'的文件上执行git status,您可能没有该文件 – 2016-03-01 10:53:24
如果要永久忽略这些文件,一个简单的方法将它们添加到.gitignore
是
git ls-files --others --exclude-standard >> .gitignore
为什么这不会得到多少票?无需通过其他2个程序! – JoelFan 2017-01-04 21:56:02
@JoelFan:两个理由: 1)**这个只从git的根目录开始工作,而接受的从每个子目录开始工作,你只需要调整目标'.gitignore'路径 2)if你有一个未被跟踪的目录,**这个列表中的每一个单独的文件,而不是未跟踪的目录本身**(所以你不会忽略该目录,因此仍然可以在未被跟踪的目录中报告未来的文件,而接受的只列出目录,而不是内部未跟踪的文件,这是你想要做的事情,但通常你只是想忽略整个目录 – Diego 2017-06-30 13:50:36
谢谢Poolie我欣赏你的建议的不同之处* *因为@Diego提到的几点我开始使用文件和文件夹库,我不想跟踪/推送原始文件,我只想跟踪我在库中添加或重建的文件。 PA租文件夹将忽略所有内容。这/你的解决方案快速添加所有1696个文件。的xD – Chaos7703 2017-07-30 02:58:51
- 1. Git忽略未跟踪文件
- 2. Git:忽略当前跟踪目录中的文件
- 3. 如何将所有当前未跟踪的文件/文件夹添加到git忽略?
- 4. 如何忽略所有文件,但不在Git中的目录
- 5. 的Git忽略不忽略一个文件,但所有文件
- 6. 的Git忽略目录下的所有文件,但不目录
- 7. git忽略正在跟踪的文件
- 8. Git:忽略跟踪的文件
- 9. Git恢复忽略文件,使用git clean删除所有忽略文件-fX
- 10. 忽略与GIT的所有_notes目录
- 11. git跟踪忽略文件夹
- 12. Git忽略指定目录中的所有文件
- 13. git reset - 忽略特定的未跟踪文件
- 14. Git跟踪未追踪的文件,但未添加到提交
- 15. Git不显示未追踪的目录
- 16. 如何忽略已经在git中跟踪的文件
- 17. 如何忽略使用git跟踪文件的新变化?
- 18. GIT:如何将所有本地忽略的文件导出到其他目录?
- 19. Git:只有在没有跟踪文件的情况下忽略目录
- 20. Git忽略Xcode 4项目的文件
- 21. git添加除忽略.gitignore文件中的所有文件外
- 22. 跟踪文件中忽略目录
- 23. Git忽略除子目录中的某些文件以外的所有文件
- 24. 我如何忽略SourceTree中的不可忽略文件(Git)
- 25. 如何在使用CocoaPods时忽略未跟踪的文件?
- 26. 我如何忽略未跟踪文件中的.DS_Store?
- 27. Rails忽略GIT的文件
- 28. 忽略git中所有具有相同名称的文件
- 29. 如何在任何文件夹中忽略git中的目录
- 30. 忽略未被忽略的文件
使用'-uno'标志。 – nhahtdh 2012-07-18 13:39:14
[有没有办法让git不显示未跟踪文件?](http://stackoverflow.com/questions/2774416/is-there-a-way-to-get-git-not-to -show-the-untracked-files) – random 2012-07-28 04:48:07
或者你可能想添加一个*到你的.gitignore文件。 :) – vilicvane 2013-08-07 07:38:04