git学习笔记之忽略文件

git之忽略文件(ignore file)

git忽略文件有三种方式

方式一

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

方式二

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

方式三

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

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 忽略*.o和*.a文件
*.[oa]
// 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
// 忽略dbg文件和dbg目录
dbg
// 只忽略dbg目录,不忽略dbg文件
dbg/
// 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
// 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg

注: 使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

Git忽略规则及.gitignore规则不生效的解决办法

有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

1
2
3
git rm -r --cached .
git add .
git commit -m 'update .gitignore'

git pull 遇到的问题

git pull的时候遇到这样的问题:
The following untracked working tree files would be overwritten by merge balabala…
解决办法:

1
git clean -d -fx

备注:会删除掉没有add到仓库的文件,操作记得慎重,以免改动文件的丢失。本质上就是操作仓库中没有被追踪的本地文件

git pull 失败 ,提示:fatal: refusing to merge unrelated histories
在进行git pull 时,添加一个可选项

1
git pull origin master --allow-unrelated-histories
打赏

请我喝杯咖啡吧~

支付宝
微信