什么时候使用.git / info / exclude而不是.gitignore来排除文件?


144

我对使用.git/info/exclude.gitignore排除文件的优缺点感到困惑。

两者都在存储库/项目级别,所以它们有何不同.git/info/exclude?何时使用?

Answers:


196

的优点.gitignore是,可以将其检入存储库本身.git/info/exclude。另一个优点是,您可以有多个.gitignore文件,每个目录/子目录中都有一个文件,用于目录特定的忽略规则,与不同.git/info/exclude

因此,.gitignore可在存储库的所有克隆中使用。因此,在大型团队所有的人都忽略了同一种文件实例的 *.db*.log。而且由于有多个,您可以有更具体的忽略规则.gitignore

.git/info/exclude仅适用于单个克隆,因此一个人在其克隆中忽略的内容在其他人的克隆中不可用。例如,如果某人Eclipse用于开发,则该开发人员向其中添加.build文件夹可能很有意义,.git/info/exclude因为其他开发人员可能未使用Eclipse。

一般而言,必须普遍忽略的文件/忽略规则应该进入.gitignore,否则,您只想在本地克隆上忽略的文件应该进入.git/info/exclude


但是理想情况下应该按照Git官方文档git-scm.com/docs/gitignore
Devendra Swami

@DevendraSwami我没有~/.gitignore在您的上述评论中输入哪个具体条目。我的理解是忽略规则可以分为3个级别- $PROJECT/.git/info/exclude针对(项目,用户)的特定忽略规则,$PROJECT/<any number of directories>/.gitignore这适用于跨任何位置(签入)~/.gitignore 的任何用户的特定于项目的忽略规则,针对该用户的任何项目的特定于用户的忽略规则在那台机器上。基于客观,你选择摆在入口的地方。
万亩无

是的,您绝对正确。我的意见是与此相关的问题stackoverflow.com/questions/59673991/...
德文德拉·斯瓦米

对于原始的不完整评论,我深表歉意。
Devendra Swami

2
@ShimmyWeitzhandler,您的存储库中已包含sln文件吗?然后exclude或.ignore不会阻止git跟踪其更改。请尝试以下操作之一:git rm --cached <path-name>将其从存储库中删除,但将其保留在本地。 git update-index --skip-worktree <path-name>将忽略对文件的更改,但将其保留在存储库中。出于好奇:为什么要排除sln文件?这是.Net解决方案的重要组成部分,对吧?
科恩

36

Googled:3种排除文件的方法

  1. .gitignore 适用于该存储库的每个克隆(版本化,每个人都拥有),
  2. .git/info/exclude 仅适用于此存储库的本地副本(本地,不与他人共享),
  3. ~/.gitignore 适用于计算机上的所有存储库(本地,不与他人共享)。

3. 实际上需要在您的计算机上设置配置:

git config --global core.excludesfile '~/.gitignore'

2
是的,我也读过,但想获得更实际的(现实世界)观点:-)
Parag 2014年

链接的博客错误地调用了文件.git/info/excludes,该文件应为.git/info/exclude,该文件已通过链接的文档得到确认。
mwfearnley

13
(破坏者:第三种方式是通过〜/ .gitconfig中的设置进行计算机全局忽略)
hmijail哀悼受聘者

@hmijail:谢谢,我在这个答案中包括了您的评论
LeGEC

12

只是为了提供我们的(真实世界)体验:当我们不得不在每个开发环境上自定义一些配置文件时,我们开始使用.git / info / exclude,但仍希望将源代码保存在存储库中并供其他开发人员使用。

这样,本地文件一旦被克隆和修改,就可以从提交中排除,而不会影响回购中的原始文件,但也不必在回购中被忽略。


4

使用.gitignore的忽略了特定的规则项目exclude对特定于您的环境的忽略规则使用或全局忽略文件。

例如,我的全局忽略文件将忽略由我使用的任何编辑器生成的临时文件-该规则特定于我的环境,并且对于同一项目中的某些其他开发人员可能有所不同(也许他们使用不同的编辑器)。OTOH,我的项目.gitignore文件忽略了诸如API密钥之类的东西,并生成了工件(这些都是用于项目的),并且中的每个人都应相同。

有帮助吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.