用对 gitignore

简介: 使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中。理解 gitignore 的 pattern 规则十分重要。

使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中。理解 gitignore 的 pattern 规则十分重要。我要说话

Pattern 规则

关于 Pattern 规则,可以查看 git 的相关文档:http://git-scm.com/docs/gitignore,大致有以下几点:我要说话

  1. 空行不匹配任何内容,所以可以作为块分隔符;
  2. # 开头表示注释,如果相匹配 #,可以在前面加一个反斜杠,即 \#
  3. 除非加了反斜杠,否则一连串的空格会被忽略;
  4. 如果在匹配的内容前面加上 !,则这些匹配过的部分将被移出,如果要匹配以 ! 开头的内容,需要加上反斜杠,如 \!important.txt
  5. 如果一个匹配 pattern 后面有一个斜杠,如 foo/,则默认会匹配所有(包含父子文件夹)中的 foo 文件夹内容,并且它不会匹配单个的文件;
  6. 如果一个匹配 pattern 不包含斜杠,如 foo,Git 会将其作为一个 shell 的查找命令匹配内容。

需要注意的 **我要说话

  • 如果一个 pattern 以 ** 开头,如 **/foo,最后会匹配所有文件夹下的 foo 文件(夹);
  • 如果一个 pattern 以 /** 开头,如 abc/**,则表示匹配 abc 目录下的所有内容;
  • 如果一个 pattern 中间包含 **,如 a/**/b,则会匹配 a/ba/x/ba/x/y/b 以及所有类似的内容。

gitignore 相关的问题

匹配示例

如果我们要匹配 ‘foo’ 目录下除去 ‘foo/bar/‘ 的内容,可以这样做:我要说话

foo/
!foo/bar/

如果要匹配所有目录下的 node_modules 文件夹,只需要这样做:我要说话

node_modules/

如果要匹配所有的 json 文件,可以这样做:我要说话

*.json

git 操作中,add 之后再加入 gitignore

Git 操作中经常会出现这样的问题,当我们 git add 之后,突然想起来要添加一个 gitignore 文件,但是一些诸如 node_modules/, cache/ 等文件已经被 add 进去了,这些文件不会被 ignore 掉,怎么办?我要说话

最直接的方式是:我要说话

# 这一步的操作相当于回到 git add 上一步
git rm -r --cached .
# 然后重新 add
git add --all .

git 添加空文件夹

Git 默认是不添加空文件夹的,如果一定要加入这个文件夹,有以下方案:我要说话

1)在文件夹添加文件,然后删除我要说话

2)在文件夹中添加一个 .gitkeep 文件我要说话

让 git 不要添加 gitignore 文件

如果在 .gitignore 文件中添加我要说话

.gitignore

你会发现,并没有起作用, .gitignore 文件依然被加到了 git 中,为什么会有这个需求呢?有些人在本地开发的时候有一些其他的文件夹名不愿意让别人看到,虽然在 gitignore 中被忽略了,但是 .gitignore 文件中依然可以看到这些文件夹名字。我要说话

其实没有什么好的办法处理这个问题,.gitignore 做多人协作开发的时候可以直接根据同一份 gitignore 过滤文件,如果一定要做,可以从 add 中在 remove 掉:我要说话

git rm --cached .gitignore

Git 操作涉及的命令巨多,但是日常开发中用到的就那么几个,把原理搞清楚,用起来得心应手。我要说话

转载:http://www.barretlee.com/blog/2015/09/06/set-gitignore-after-add-file/

相关文章
|
6月前
|
缓存 Shell 开发工具
git 基本 使用和.gitignore文件不生效
git 基本 使用和.gitignore文件不生效
112 0
|
缓存 Java Shell
9 Git gitignore 设置
.gitignore 介绍 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。 虽然 gitignore 文件对Git有特殊的意义,但是它和版本库中任何其他普通文件都是同样管理的。除非把 gitignore 添加到索引中,否则 Git 仍会把它当成未追踪的文件。
235 1
|
缓存 开发工具 git
Git .gitignore 文件不生效解决方法
Git .gitignore 文件不生效解决方法
316 0
|
缓存 开发工具 git
git-解决.gitignore文件不生效问题
git-解决.gitignore文件不生效问题
213 0
|
开发工具 git
git 添加 .gitignore
git 添加 .gitignore
127 0
.gitignore文件不生效
.gitignore文件不生效
147 0
|
XML 缓存 搜索推荐
Git - .gitignore 配置
Git - .gitignore 配置
608 0
|
IDE Java 开发工具
推荐一个实用的 .gitignore 文件
为什么要忽略文件? 常用的版本控制工具,不管是使用 git 还是 svn,我们都需要排除一些与程序代码无关的文件,如像 eclipse/ intellij idea 等 IDE 工具留下来的 .settings、.classpath、.project、.iml、.idea 等各种配置文件,还有 maven/ gradle 在项目构建后的 target、classes 目录下的编译文件等。
183 0
|
缓存 开发工具 git
解决.gitignore无法生效的问题
使用git的过程中, 为了避免垃圾文的上传,我们可以手动配置.gitignore排除一些文件或文件夹. 配置.gitignore 排除文件.DS_Store, 排除文件夹node_modules/ .
1307 0