1.约定:
/ 是你本机的git目录的根,不是Linux系统的/(根); /指的是你在目录下执行 git init的那个目录,里面有.git文件夹的
例如:
# cd /opt/test/ # git init # touch test.txt # ls -l /opt/test/test.txt
上面test.txt的根指的就是test/
2.注释: .gitignore里注释用#号
3.目录结构
# cd /opt/test/ # ls t1.txt test.txt t2/ t2/t1.txt t2/t2.cc t2/t3/t.py
在.gitignore里写入以下内容
情况一: 不想让,/opt/test/目录和所有子下的t1.txt 上传到仓库
t1.txt
情况二: 不想让,/opt/test/下的 t1.txt 上传
/t1.txt
情况三: 不想让,所有后缀为txt的文件上传
*.txt
情况四:不想让,t2/目录下的文件和目录上传
t2/*
情况五:不想让,t3目录上传
t2/t3/
情况六:想让,t2/目录下 t3/ 子目录上传
!t2/t3/
或
!/t2/t3/
注意
尾随的 /*
很重要:
模式 dir/
排除了一个名为 dir
的目录以及(隐式地)它下的所有内容.
使用 dir/
,Git 永远不会查看 dir
下的任何内容,因此永远不会将任何取消排除"模式应用于 dir.
模式
dir/*
没有说明dir
本身;它只是排除 dir
下的所有内容.使用 dir/*
,
Git 将处理
dir
的直接内容,让其他模式有机会取消排除"某些内容(!dir/sub/
).
如果已经提交过的文件或者文件夹怎么办?此时更改.gitignore文件对已经提交的文件是无效的。
1 首先,编辑.gitignore文件。
2 然后如果是单个文件,可以使用如下命令从仓库中删除:
git rm --cached logs/xx.log
如果是整个目录:
git rm --cached -r logs
如果文件很多,那么直接
git rm --cached -r .
如果提示某个文件无法忽略,可以添加-f参数强制忽略。
git rm -f --cached logs/xx.log
3 然后
git add .
git commit -m "Update .gitignore"/span>
把被忽略的某个文件强制添加回去:
git add -f filename
ignore规则检查:
git check-ignore
4 一些规则
a# 忽略所有 .a 结尾的文件
!lib.a # 但lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略build/ 目录下的所有文件
doc/.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
参考:
https://www.it1352.com/2639226.html
https://learnku.com/articles/65721
http://t.zoukankan.com/Excr-p-12588385.html
https://blog.csdn.net/cainiao1412/article/details/109517218
https://www.cnblogs.com/superfeeling/p/15936393.html
https://www.cnblogs.com/shamshing/p/15357578.html
https://blog.csdn.net/nyist_zxp/article/details/119887324
https://www.jianshu.com/p/854672c36692