.gitignore到底是什么?


212

我刚刚创建了一个Github存储库,并且想知道.gitignore文件的用途。我从不创建一个开始,但是由于大多数存储库都有一个而添加了一个。我需要一个吗?我可以/是否会忽略它,或者它有用途?我对此进行了一些研究,但找不到具体的解释。

Answers:


175

.gitignore告诉git应该忽略哪些文件(或模式)。通常用于避免从工作目录中提交对其他协作者无用的临时文件,例如编译产品,IDE创建的临时文件等。

您可以在此处找到完整的详细信息。


因此,如果您在github.com上的新存储库中创建.gitignore,然后执行git init和git add 在本地计算机上-尚未连接到.gitignore,因为尚未连接到该存储库-这如何工作?我执行git commit时生效吗?要么?
Xonatron

_._gitignore用来干什么的?它仅在gitignore 中位于子目录中时使用吗?
塞卡特·查克拉博蒂(Saikat Chakrabortty)

因此,它仍然保留在本地,但不会被推到原产地吗?因此,如果某些用户下载了github repo,那么该秘密文件也会下载吗?
2014年

忽略是什么意思?谁/什么/何时忽略?我知道“ 忽略” 一词的含义,但是在Git的上下文中我找不到关于“忽略”的含义的清晰描述。显然,该术语对于理解该术语的人来说是完全可以理解的,但是为不知道该术语的人写的任何东西都需要解释所有具有上下文唯一定义的术语。
user34660

1
@ user34660忽略意味着-Git将不会跟踪文件中(模式)指定的.gitignore文件中的更改。即使您更改了它们,git也不会将它们显示为已修改。
Mureinik

42

这是您希望git在工作目录中忽略的文件的列表。

假设您使用的是Mac,并且所有目录中都有.DS_Store文件。您希望git忽略它们,因此将.DS_Store添加为.gitignore中的一行。等等。

git文档将告诉您所有您需要了解的信息:http : //git-scm.com/docs/gitignore


2
您的.DS_Store场景最终引起了我的共鸣,因为我想我并没有坚持这个概念,因为我还不需要在项目中使用它。谢谢。我最终以为起点,因为我使用所有不同的操作系统,特别注意本# OS generated files #节。
phoenixlaef

2
我知道我对此线程迟到了,但是谢谢@AndyLester!我是编程和Github的新手。我发现为解决此类问题而写的许多答案中充满了新手可能不理解的术语(即,编译产品,IDE创建的临时文件.... h @ ll是什么!)。但是,您的Mac描述非常优雅,非常完美!
Vesuccio

21

在执行提交时,您不希望意外地包含临时文件或构建特定的文件夹。因此,使用.gitignore列出要忽略的项目。

同样,重要的 git status是您要git status列出已修改文件的最常用命令之一。

希望您的git status列表看起来干净,不需要的文件。例如,我更改了a.cpp, b.cpp, c.cpp, d.cpp & e.cpp我希望git status列出以下内容:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

我不要 git status列出这样的更改文件以及中间对象文件和构建文件夹中的文件

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

因此,为了使自己摆脱git status列出这些中间临时文件并意外地将它们提交到存储库中,我应该创建.gitignore每个人都应该做的。我需要做的就是列出.gitignore要排除在提交中的文件和文件夹。

以下是我.gitignore避免提交不必要的文件

/*.cmake
/*.DS_Store
/.user
/build

7

有些文件不希望Git签入。Git将工作副本中的每个文件视为以下三种情况之一:

  1. 已跟踪-先前已暂存或提交的文件;
  2. 未跟踪-未暂存或提交的文件;要么
  3. 已忽略-已明确告知Git忽略的文件。

被忽略的文件通常是构建的工件和机器生成的文件,可以从您的存储库源中获取,或者否则不应提交。一些常见的示例是:

  • 依赖项缓存,例如/node_modules或的内容/packages
  • 编译后的代码,比如.o.pyc.class文件
  • 构建输出目录,如/bin/out/target
  • 在运行时生成的文件,诸如.log.lock.tmp
  • 隐藏的系统文件,例如.DS_StoreThumbs.db
  • 个人IDE配置文件,例如 .idea/workspace.xml

忽略的文件将在名为的特殊文件中进行跟踪,该文件.gitignore已在存储库的根目录中检入。没有显式的git ignore命令:相反,.gitignore当您要忽略的新文件时,必须手动编辑并提交文件。.gitignore文件包含与存储库中文件名匹配的模式,以确定是否应忽略它们。这是一个示例.gitignore文件。有关更多详细信息,请参见此链接


5

.gitignore的主要目的–因此,您避免添加不相关的文件等。Git

在某些存储库中,我有很多个人笔记/涂鸦:它们对我有用,但对其他人没有用。我不想将其上传到github,因为它只会使阅读它的每个人感到困惑。好消息是我可以要求git“忽略”那些文件。这种方法的唯一代价是,如果我的计算机崩溃等,我将无法恢复这些笔记。

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.