您是否应该将.gitignore提交到Git回购中?

您是否应该将.gitignore提交到Git回购中?,git,gitignore,Git,Gitignore,您认为将.gitignore提交到Git回购中是一种好做法吗 有些人不喜欢它,但我认为它很好,因为你可以跟踪文件的历史。不是吗?通常是的,.gitignore对每个想使用存储库的人都很有用。有时你会想忽略更多的私事(可能你经常创建日志或其他东西。在这种情况下,你可能不想强迫别人这样做。你通常会提交。gitignore。事实上,我个人尽可能确保我在不处理某件事情时,我的索引总是干净的。(git状态不应显示任何内容。) 在某些情况下,您希望忽略与项目无关的内容。例如,您的文本编辑器可能会创建自动的*

您认为将
.gitignore
提交到Git回购中是一种好做法吗


有些人不喜欢它,但我认为它很好,因为你可以跟踪文件的历史。不是吗?

通常是的,
.gitignore
对每个想使用存储库的人都很有用。有时你会想忽略更多的私事(可能你经常创建
日志
或其他东西。在这种情况下,你可能不想强迫别人这样做。

你通常会提交
。gitignore
。事实上,我个人尽可能确保我在不处理某件事情时,我的索引总是干净的。(
git状态
不应显示任何内容。)

在某些情况下,您希望忽略与项目无关的内容。例如,您的文本编辑器可能会创建自动的
*~
备份文件,或者另一个示例是OS X创建的
.DS\u Store
文件

我想说的是,如果其他人抱怨那些规则把你的
.gitignore
弄得乱七八糟,就把它们放在一个全局文件中

默认情况下,此文件位于
$XDG\u CONFIG\u HOME/git/ignore
(默认为
~/.CONFIG/git/ignore
),但可以通过设置
核心.excludesfile
选项来更改此位置。例如:

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

只需根据您的心意创建和编辑全局excludesfile;它将应用于您在该机器上工作的每个git存储库。

最好是
.gitignore
至少忽略您的构建产品(程序,*.o等).

我将commit.gitignore放在这里,这是对可能构建我的项目的其他人的一种礼貌,即以下文件是派生的,应该忽略

我通常会混合使用。我喜欢让makefile生成.gitignore文件,因为makefile将知道与项目相关的所有文件-派生的或其他文件。然后签入一个顶级项目.gitignore,它将忽略makefile为各个子目录创建的生成的.gitignore文件


因此,在我的项目中,我可能有一个包含所有内置可执行文件的bin子目录。然后,我将让我的makefile为该bin目录生成一个.gitignore。在顶部目录中,列出bin/.gitignore的.gitignore。顶部目录是我签入的目录。

提交。gitignore可能非常有用,但您希望确保不修改之后,尤其是如果你经常在分支之间切换,你会做得太多。 如果您这样做,您可能会遇到这样的情况:在一个分支中忽略文件而在另一个分支中不忽略文件,这会迫使您手动删除或重命名工作目录中的文件,因为签出失败,因为它会覆盖未跟踪的文件


因此,是的,一定要提交你的.gitignore,但在你合理地确定它以后不会有太大变化之前。

+1“私人事务”可以在
$GIT_DIR/info/exclude
~/.gitconfig
文件中提及。如果您已经签入了一个文件,并且希望忽略它,那么如果您稍后添加规则,GIT将不会忽略该文件。在这种情况下,您必须首先通过在终端中运行以下命令来取消对该文件的跟踪:
GIT rm--cached FILENAME
如果没有,请将.gitignore放在.gitignore中…您可以随时在
.gitignore
文件中添加一些注释
行,以解释您忽略某些内容的原因。注释每一行都有点过分,但我有一些部分标记为
\IDE(Eclipse)
\OS(Mac OS X)
#Generated(Perl)
。这样,如果有人想使用不同的操作系统或IDE,他们可以添加一个部分,我们都可以共享。赞成“我个人尽可能确保我的索引在我不处理某个内容时总是干净的。(git状态应该什么都不显示。)”注意:对于现代Git,
核心.excludesfile
的默认值是
~/.config/Git/ignore
,符合XDG基本目录规范+1 for global
.gitignore
——当您的同事对推送的
.gitignore
文件的内容或它们是否应该被推送有不同意见时,这将非常有益所有这些都使用大量不同的开发环境,产生不同类型的噪音。关于全局忽略的更多信息没有回答这个问题:
.gitignore
本身是否应该是“
.gitignore
'd”?请注意,这不是问题所在,这确实回答了问题:“is[it]将.gitignore提交到Git回购中是一个好做法?@cayuu我相信答案是“将.gitignore提交到Git回购中是一个好做法”xyz,我不知道它是如何回答这个问题的。问题是.gitignore是否应该进行版本控制。这是一个不合理的期望。我从不确定它在未来不会有多大变化,因为我无法了解未来。事实上,除非一个项目死了,否则肯定会添加和删除很多东西,因为这样我就无法知道未来这是发展的本质。