我对使用.git/info/exclude
和.gitignore
排除文件的利弊感到有些困惑。
它们都处于存储库/项目的级别,因此它们如何区别以及何时应该使用.git/info/exclude
?
答案 0 :(得分:128)
.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
答案 1 :(得分:22)
谷歌搜索:3 ways of excluding files
.gitignore
适用于此存储库的每个克隆(版本化,每个人都会拥有它),.git/info/exclude
仅适用于此存储库的本地副本(本地,不与他人共享),~/.gitconfig
适用于您计算机上的所有存储库(本地,不与他人共享)。 3.
实际上需要在您的计算机上设置配置:
git config --global core.excludesfile '~/.gitignore'
答案 2 :(得分:11)
仅提供我们的(真实世界)体验:当我们必须在每个开发环境中自定义一些配置文件但仍希望源代码在repo中维护并可供其他开发人员使用时,我们开始使用.git / info / exclude 。
这样,一旦克隆和修改本地文件,就可以从提交中排除,而不会影响仓库中的原始文件,但也不必在仓库中被忽略。
答案 3 :(得分:2)
使用.gitignore
忽略特定于项目的规则。使用exclude
或全局忽略文件来忽略特定于环境的规则。
例如,我的全局忽略文件忽略了我正在使用的任何编辑器生成的临时文件 - 该规则特定于我的环境,并且可能与同一项目中的其他开发人员不同(可能他们使用不同的编辑器)。 OTOH,我的项目.gitignore
文件忽略了诸如API密钥和构建工件之类的东西 - 那些用于项目,并且对于项目中的每个人都应该是相同的。
这有帮助吗?