22

目前,每当我创建一个我希望 Git 跟踪的文件时,我只需将它添加到索引中。如果我不将它添加到索引中,Git 将不会“看到它”。那么我为什么要使用 .gitignore 文件,而不是不将其添加到索引中呢?

4

7 回答 7

20

您通常会发现,当您的项目变得更大时,一个一个地添加每个文件会变得乏味。

在 Java 中,您最终可能会得到许多.class不想添加到存储库中的文件。同样,您最终可能会.o在 C 或.pycPython(例如)中得到许多文件。

在您的文件中拥有像*.class, *.o,这样的模式可以让您一劳永逸地忽略这些文件。随后的运行(或类似的,如果您使用 GUI)不会告诉您这些是新的、未跟踪的文件,从而让您专注于真正新且明显未跟踪的文件。*.pyc.gitignoregit status

如果您添加整个目录(例如 ),这也很有用git add myproject:这可以让您完全忽略一类文件。

于 2012-12-02T23:43:10.613 回答
11

它将文件隐藏在git status. 尤其是对于大量生成的文件,您真的不希望它们一直出现在那里。它还可以防止您意外添加它们,例如在执行git add somefolder.

gitignore 文件的目的是确保某些未被 git 跟踪的文件保持未被跟踪。

于 2012-12-02T23:41:37.320 回答
5

gitignore 文件的目的是确保某些未被 git 跟踪的文件保持未被跟踪。

http://git-scm.com/docs/gitignore

假设您git add .从存储库的根目录运行,并且您没有忽略任何内容。您刚刚将您之前在精神上忽略的所有文件添加到索引中。另一个好处是,通过版本控制.gitignore,您可以确保其他人不会犯类似的错误。

于 2012-12-02T23:41:47.757 回答
1

除了使用方便之外git commit -a,它还可以防止意外污染您的存储库或暴露敏感信息。

于 2012-12-02T23:43:08.850 回答
1

是的,为了避免在 GIT 的远程存储库中提交不需要的文件。只需在 .gitignore 文件中提供适当的描述,例如,

如果我想避免带有 pyc 文件或 .class 文件扩展名的文件,那么 *.pyc *.class

我将这两行放在 .gitignore 文件中。将来我不需要为这些永远不会在 GIT 存储库中提交的文件而烦恼。

谢谢!

于 2012-12-03T06:31:20.543 回答
1

添加每个文件并不乏味。例如,如果你有一堆新的 .java 文件,你可以这样做:

find . -name \*.java | xargs git add

当你有很多异常时,将所有可能的异常保存在 .gitignore 中会很乏味。因此,当异常(不应签入的文件模式)很少时,.gitignore 是有意义的,但是有许多文件模式需要检查并且新文件会定期弹出。但是当它是另一种方式时,我认为没有 .gitignore 的生活会更好。

于 2014-10-31T20:13:47.220 回答
0

将某些文件指定到文件中的好处.gitignore是您可以一次提交所有跟踪的文件,而不必担心意外添加的忽略文件。使用例如以下方式提交文件要快得多:

git commit -a

而不是一一添加...

于 2012-12-02T23:43:35.747 回答