.gitignore

Posted clark1990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.gitignore相关的知识,希望对你有一定的参考价值。


Git是跟踪项目中所有文件的好工具,但是,您会希望在项目的整个生命周期不要跟踪某些文件及其变更。例如:

  • 系统文件(i.e. Mac系统的.Ds_Store)
  • 应用程序配置文件(i.e. app.config, .env)
  • 构建组件(i.e. *.pyc)
  • 安装的依赖(i.e. node_modules)
  • 个人文件(i.e. todo.txt)
  • 应用程序数据和日志(i.e. .log,.sqlite)

Git 中 gitignore 概念:以.gitignore文件定义哪些文件将被 Git 排除跟踪, 被.gitignore匹配到的文件将不会显示在 Git 的Untracked files列表。

使用.gitignore防止跟踪文件

.gitignore文件控制 Git 仓库中应排除跟踪的文件(可由文件类型、路径、通配符等确立)。你和你的团队可以随时更新这个文件来控制忽略哪种类型的文件。

创建.gitignore文件

  • Visual Studio
    使用VS为项目创建(或连接)代码仓库时,Visual Studio 自动在仓库中创建.gitignore文件。
  • 下载.gitignore模板
    从 https://github.com/github/gitignore 下载特定项目类型的`.gitignore文件模板,修改以充分适配你的项目。

Git 将.gitignore应用于文件夹及其子文件夹,建议您将.gitignore放在存储库的根文件夹中,以免造成混淆。

实践中有时会在项目子目录嵌套定义.gitignore文件, 虽然不常见,但对于有特定规则的子目录,嵌套定义.gitignore文件有用。

自定义.gitignore

只要你修改了.gitignore文件,Git 立即开始忽略这些文件;如果你希望团队成员都忽略相同的文件,请提交这次 git 变更。
.gitignore 中的每一行都排除一个文件或一组(与模式匹配的)文件, .gitignore语法很灵活:

# ignore a single file
mycode.class

# ignore an entire directory
/mydebugdir/

# ignore a file type
*.json

# add an exception (using !) to the preceding rule to track a specific file
!package.json

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Windows 使用者注意:.gitignore 文件中的路径使用正斜杠分隔符,而不是反斜杠

忽略已提交文件中的变化

临时忽略变更

在开发阶段,有时候需要临时忽略本地仓库中已提交的文件的变更。例如,你的配置文件与本机的工作环境或者项目配置有关,那么这个操作就非常有用:

git update-index --skip-worktree <file>
  • 1

当然也可以恢复文件的追踪:

git update-index --no-skip-worktree <file>
  • 1

也可以通过以下方式进行。这主要是为了防止文件被开发者修改。
关闭变更追踪:

git update-index --assume-unchanged <file>
  • 1

恢复变更追踪:

git update-index --no-assume-unchanged <file>
  • 1

永久忽略文件变更

如果一个文件已经被 Git 跟踪,那么再将这个文件添加到 .gitignore并不会忽略文件变更。你还需要从Git 暂存区(index)中移除这个文件的信息,步骤如下:

  1. .gitignore中添加这个文件
  2. 从暂存区移除文件信息:
git rm --cached  <file>
  • 1
  1. 提交删除文件和更新的.gitignore到您的仓库

注:以上步骤不会从系统中删除文件,只是告诉Git以后忽略该文件的变更

仅在个人系统中忽略文件

.gitignore文件被提交并推送之后,就会在团队共享。若只想在你的系统上排除文件,请编辑本地仓库中的.git/info/exclude文件, 修改这个文件不会共享给其他人,这个动作只对此本地仓库有效。

在个人系统中忽略所有仓库的特定文件

利用git config命令建立全局.gitignore文件:

git config core.excludesfile C:\\Users\\frank\\.gitignore_global
  • 1

这个命令帮助你忽略所有的绝不会提交的文件类型,比如编译文件。

参考文献

[1] Ignore file changes with Git

以上是关于.gitignore的主要内容,如果未能解决你的问题,请参考以下文章

如何正确设置.gitignore

如何移除 gitignore文件

Git 的 .gitignore 配置

Git中.gitignore的配置语法

.gitignore 文件忽略自身

.gitignore文件的创建