用对 gitignore

使用 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 .# 然后重新 addgit 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/

时间: 2024-11-10 07:32:44

用对 gitignore的相关文章

gitignore git忽略文件

gitignore文件内容 .settings/ .gitignore .project .classpath .settings/ #忽略当前目录及子目录内的所有.settings文件夹 .gitignore #忽略当前目录及子目录内的所有.gitignore文件 .project .classpath

关于使用Github,gitignore不起作用的解决方法

直接上解决方法: 1 2 3 git rm -r --cached . git add . git commit -m 'update .gitignore' 解释: .gitignore文件,具体的规则一搜就有.我在使用Git的过程中,明明写好了规则,但问题不起作用,每次还是重复提交,无法忍受.其实这个文件里的规则对已经追踪的文件是没有效果的.所以我们需要使用rm命令清除一下相关的缓存内容.这样文件将以未追踪的形式出现.然后再重新添加提交一下,.gitignore文件里的规则就可以起作用了.

gitignore相关

用git也有一段时间了,前些天在公司fork一个新的项目着手做,结果这个项目的creator早先把eclipse的配置文件也提交了上去,后续其他参与者提交代码时,这几个文件总是要注意不选中. 虽然不影响工作,但是看那红色点点以及每次提交都要去掉勾选,就想着把这些没用的干掉. 先是配置.gitignore文件,配置文件的写法参考 http://www.pfeng.org/archives/840 ,就不复粘了,很简单的规则. 然后提交了.gitignore之后,merge以后,好像还是没有生效,搜

IntelliJ IDEA 的 .idea 目录加入.gitignore无效的解决方法

无效的原因是:对应的目录或者文件已经被git跟踪,此时再加入.gitignore后就无效了, 解决办法: 先执行 [文件夹]  git rm -r --cached .idea [文件]     git rm --cached demo-project.iml 再重新加入.gitignore文件 解决方法来源:http://stackoverflow.com/questions/9550437/how-to-make-git-ignore-idea-files-created-by-rubymi

Git服务器的Gitosis安装配置及gitignore的使用方法

Git服务器Gitosis安装设置 1.安装 openssh服务器 sudo apt-get install openssh-server openssh-client 2.创建个人公钥和私钥 在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥 ssh-keygen -t rsa 默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥 ssh-keygen -t rsa -b 4096 默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示: id_rsa

Github用.gitignore忽略指定文件

.gitignore Github提供.gitignore这种功能,可以自己指定哪些文件可以不被管理.具体方法是在版本管理的根目录下(与.git文件夹同级)创建一个.gitignore. 应用实例 项目中有clist.h clist.c  main.c三个文件,编译执行后,生成了三个文件  clist.o  main.o   main.这三个文件是不需要进行版本管理的,所以需要忽略这些文件,使用 git  stauts查看后,发现这三个文件也是处于 Untracked files状态.而实际上我

.gitignore(转载)

转自:http://blog.csdn.net/liuqiaoyu080512/article/details/8648266 git 可以管理所有文件的变更, 但并不是所有文件都有意义. 大部分二进制文件没有意义 比如说 VC 工程的 Debug 和 Release 文件夹下的文件, 或者 java 项目的 bin 文件夹中的 class 文件, 这些文件都是基于源代码生成的, 只要有源代码就能生成出来,所以版本管理的时候应该忽略它们. 有些文本文件也没有意义 比如说 VC 工程中的 .plg

gitignore 使用

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: # 此为注释 – 将被 Git 忽略 *.a # 忽略所有 .a 结尾的文件 !lib.a # 但 lib.a 除外 /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件 doc/*.txt # 会忽略 doc/note

.gitignore non-valiate

Git忽略规则及.gitignore规则不生效的解决办法 分享到:更多19 2015-02-12    分类:Share2人评论65,215 次人浏览 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: 1 2 3 4 5 6 7 # 此为注释 – 将被 Git 忽略 *.a       # 忽略所有 .a 结尾的文件 !lib.a    # 但 lib.a

Unity5 项目设置 .gitignore 解决 Missing Prefab 问题

同步Unity工程时候,两边总是出现Missing Prefab问题. 按照网上的教程设置是无效的.  后来Google了一下 才发现 新版Unity和旧版的设置方式是不同的. 1.在 Edit->Project Settings->Editor->Version Control Mode 中选择 Visible Meta files. 2.在 Edit->Project Settings->Editor->Asset Serialization Mode 中选择 Fo