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
3.3 提交到仓库中并测试
参考
1、Git–Git内部原理
2、Git中使用.gitignore忽略文件的推送
3、github/gitignore模板
4、《Pro Git》Ignoring Files
5、Git之忽略文件(ignore file)