您是否应该将.gitignore提交到Git仓库中?


Answers:


488

通常,是的,.gitignore对于想要使用存储库的每个人都是有用的。有时候,您可能想忽略更多的私人物品(也许是您经常创建的LOG东西。在这种情况下,您可能不想将其强加给任何人。


137
+1可以在$GIT_DIR/info/exclude~/.gitconfig文件中适当地提及“私人物品” 。
写到2011年

5
如果您已经签入了文件,并且想忽略它,那么以后再添加规则时,Git将不会忽略该文件。在这种情况下,必须首先在终端中运行以下命令来取消跟踪文件:git rm --cached FILENAME
eli-bd

133

您通常提交.gitignore。实际上,我个人要尽我最大努力确保在不做某事时索引始终是干净的。(git status不应显示任何内容。)

在某些情况下,您可能会忽略并非特定于项目的内容。例如,您的文本编辑器可以创建自动*~备份文件,或者另一个示例是.DS_StoreOS X创建的文件。

我要说的是,如果其他人抱怨这些规则使您混乱不堪.gitignore,请将其排除在外,而是将其放入全局排除文件中。

默认情况下,此文件位于$XDG_CONFIG_HOME/git/ignore(默认为~/.config/git/ignore),但是可以通过设置该core.excludesfile选项来更改此位置。例如:

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

只需创建并编辑全局排除文件即可。它将应用于您在该计算机上工作的每个git存储库。


14
您总是# some comment可以在.gitignore文件中添加行以解释为什么忽略某些内容。谈到每行是有点大材小用,但我必须有专门的章节标记# IDE (Eclipse)# OS (Mac OS X)# Generated (Perl)。这样,如果有人想使用其他OS或IDE,他们可以添加一个部分,我们可以共享。
Stuart R. Jefferys 2012年

9
赞成“我个人要确保我在不做某事时索引总是干净的。(git状态不显示任何内容。)”
SGhosh 2013年

4
Nb。使用现代Git的默认值core.excludesfile~/.config/git/ignore,符合XDG基本目录规范
JakubNarębski2014年

1
全局+ .gitignore1-当您与工作的人不同意所推送.gitignore文件的内容或是否应推送它们时,这非常有用,我们所有人都使用大量不同的开发环境,它们会产生不同类型的噪音。
Krease

1
davidwalsh.name/global-gitignore有关全局忽略的更多信息
Frode Akselsen

11

我提交commit .gitignore,这是对其他可能会构建我的项目的人的礼貌,这些项目派生了以下文件,应将其忽略。

我通常会做一个杂种。我喜欢让makefile生成.gitignore文件,因为makefile会知道与项目相关的所有文件,否则就会知道。然后,签入一个顶级项目.gitignore,它将忽略由makefile为各个子目录创建的生成的.gitignore文件。

因此,在我的项目中,我可能会有一个bin子目录,其中包含所有已构建的可执行文件。然后,我将使我的makefile为该bin目录生成一个.gitignore。并在顶级目录.gitignore中列出bin / .gitignore。最上面的是我签到的那个。


0

提交.gitignore可能非常有用,但是您要确保以后不要对其进行过多修改,特别是如果您定期在分支之间切换时。如果这样做,可能会导致分支中的文件被忽略而另一个分支中的文件却被忽略的情况,由于结帐失败,因为它会覆盖未跟踪的文件,因此迫使您手动删除或重命名工作目录中的文件。

因此,是的,请提交您的.gitignore,但是在您有把握地确定其之后不会有太大改变之前,请勿提交。


-6

.gitignore 至少对您的构建产品(程序,*。o等)而言,这是一个好习惯。


11
那没有回答问题:.gitignore 本身应该是“ .gitignore'd”吗?
查尔斯·伍德

6
请注意,不是问题所在,这确实回答了所提出的问题:“将.gitignore提交到Git存储库中是一种好习惯吗?”。
papercowboy

5
@cayuu我相信答案说:“。gitignore是一个好习惯” xyz,我不知道它如何回答问题。问题是.gitignore是否应受版本控制。
Nightograph'Mar
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.