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

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)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、分布式:Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具。  2、保存点:Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目的状态;可以在该保存点将多人提交的源码合并, 也可以回退到某一个保存点上。   3、Git离线操作性:Git可以离线进行代码提交,因此它称得上是完全的分布式处理,Git所有的操作不需要在线进行;这意味着Git的速度要比SVN等工具快得多,因为SVN等工具需要在线时才能操作,如果网络环境不好, 提交代码会变得非常缓慢。  4、Git基于快照:SVN等老式版本控制工具是将提交点保存成补丁文件Git提交是将提交点指向提交时的项目快照,提交的东西包含一些元数据(作者,日期,GPG等)。   5、Git的分支和合并:分支模型是Git最显著的特点,因为这改变了开发者的开发模式,SVN等版本控制工具将每个分支都要放在不同的目录中,Git可以在同一个目录中切换不同的分支。  6、分支即时性:创建和切换分支几乎是同时进行的,用户可以上传一部分分支,另外一部分分支可以隐藏在本地,不必将所有的分支都上传到GitHub中去。   7、分支灵活性:用户可以随时创建、合并、删除分支,多人实现不同的功能,可以创建多个分支进行开发,之后进行分支合并,这种方式使开发变得快速、简单、安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

worthsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值