Git--使用.gitignore排除文件的推送

  • 1 介绍
  • 方式 1
  • 方式 2
  • 方式 3
  • 2 规则
  • 如下示例
  • 你可以在.gitignore文件中设置的模式规则如下:
  • 可用如下正则表达式
  • 示例
  • 3 操作
  • 3.1 创建.gitignore文件
  • 3.2 添加规则
  • 3.3 提交到仓库中并测试
  • 参考


1 介绍

使用git管理代码过程中,有一类文件不希望Git自动添加,甚至显示为未被跟踪。这些通常是自动生成的文件,如日志文件或构建系统生成的文件。在这种情况下,有如下几种做法,建议方式是创建一个文件列表模式来匹配名为.gitignore的模式。

方式 1

在仓库目录下新建一个名为.gitignore的文件。.gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。

方式 2

通过配置.git/info/exclude文件来忽略文件。这种方式对仓库全局有效,只能对自己本地仓库有作用,其他人没办法通过这种方式来共享忽略规则,除非他人也修改其本地仓库的该文件。

方式 3

通过.git/config配置文件的core. Excludesfile选项,指定一个忽略规则文件(完整路径)。该方式的作用域是也全局的。

2 规则

如下示例

$ cat .gitignore
*.[oa]
*~
  • 第一行告诉Git忽略任何以".o"或者".a"结尾的文件。object 和 archive文件,可能是构建代码的产品。
  • 第二行告诉Git忽略所有以波浪线(~)结尾的文件,许多文本编辑器(如Emacs)都使用这个符号来标记临时文件。您还可以包含一个log、tmp或pid目录;自动生成的文档;等等。在开始之前为您的新存储库设置一个.gitignore文件通常是一个好主意,这样您就不会不小心提交了不想在Git存储库中提交的文件。

你可以在.gitignore文件中设置的模式规则如下:

  • 空行或以#开头的行被忽略。
  • 标准的glob模式可以工作,并将递归地应用于整个工作树。
  • 可以使用正斜杠(/)开始模式,以避免递归。
  • 您可以使用正斜杠(/)来结束模式以指定目录。
  • 你可以用感叹号(!)来否定一个模式。

可用如下正则表达式

  • Glob模式类似于shell使用的简化正则表达式。
  • 星号(*)匹配零个或多个字符;
  • [abc]匹配括号内的任何字符(在本例中是a、b或c);
  • 问号(?)匹配单个字符;
  • 用连字符分隔的括号([0-9])匹配它们之间的任何字符(在本例中是0到9)。
  • A /**/z将匹配A /z, A /b/z, A /b/c/z,等等。

示例

# ignore all .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in any directory named build
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory and any of its subdirectories
doc/**/*.pdf

3 操作

3.1 创建.gitignore文件

在.git文件夹的同一级目录下创建.gitignore文件

cd 仓库
touch .gitignore

3.2 添加规则

vim .gitignore 添加如下
*.o
*.d
*.bak
bin/log/
bin/wbot.exe
.vscode

gitlab 排除target目录 git 排除指定文件_gitlab 排除target目录

3.3 提交到仓库中并测试

gitlab 排除target目录 git 排除指定文件_正则表达式_02

参考

1、Git–Git内部原理 2、Git中使用.gitignore忽略文件的推送 3、github/gitignore模板 4、《Pro Git》Ignoring Files 5、Git之忽略文件(ignore file)