Git忽略规则(.gitignore配置)及其不生效原因和解决

Git忽略文件(ignore file)

转自:http://blog.csdn.net/benkaoya/article/details/7932370

 

1、    环境

Windows XP SP3 + TortoiseGit + msysGit

 

2、  ignore files的三种方法

 

以下涉及的ignore文件均为如下格式:

# 以'#'开始的行,被视为注释.                                                                                                                          

# 忽略掉所有文件名是 foo.txt的文件.

foo.txt

# 忽略所有生成的 html文件,

*.html

# foo.html是手工维护的,所以例外.

!foo.html

# 忽略所有.o和 .a文件.

*.[oa]

 

【方式一】

在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件)。如下图所示。

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

 

 

 

Git忽略规则(.gitignore配置)及其不生效原因和解决_第1张图片

Git忽略规则(.gitignore配置)及其不生效原因和解决_第2张图片

【方式二】

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

 

【方式三】

       通过.git/config配置文件的core. Excludesfile选项,指定一个忽略规则文件(完整路径),如下图所示。忽略规则在文件e:/gitignore.txt中(当然该文件名可以任意取)。

       该方式的作用域是也全局的。

 

Git忽略规则(.gitignore配置)及其不生效原因和解决_第3张图片

【例子】

# 忽略*.o和*.a文件

 *.[oa]

# 忽略*.b和*.B文件,my.b除外

*.[bB]

!my.b

# 忽略dbg文件和dbg目录

dbg

# 只忽略dbg目录,不忽略dbg文件

dbg/

# 只忽略dbg文件,不忽略dbg目录

dbg

!dbg/

# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内

/dbg

 

Git忽略规则(.gitignore配置)不生效原因和解决

 

问题:

.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。

原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,

这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。

 

解决:

   git清除本地缓存(改变成未track状态),然后再提交。

git rm -r --cached .
git add .
git commit -m 'xxx'

 

注意:

  • .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
  • 想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件, 对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。 

你可能感兴趣的:(Git忽略规则(.gitignore配置)及其不生效原因和解决)