git的.gitignore 排除文件夹和文件 保留子文件夹

1.约定:

1
2
/   是你本机的git目录的根,不是Linux系统的/(根);
    /指的是你在目录下执行 git init的那个目录,里面有.git文件夹的

 例如:

1
2
3
4
# cd /opt/test/
# git init
# touch test.txt
# ls -l /opt/test/test.txt

 上面test.txt的根指的就是test/

 

2.注释: .gitignore里注释用#号

 

3.目录结构

1
2
3
4
5
6
7
8
# cd /opt/test/
# ls
t1.txt
test.txt
t2/
t2/t1.txt
t2/t2.cc
t2/t3/t.py

 

 

 在.gitignore里写入以下内容

 

情况一: 不想让,/opt/test/目录和所有子下的t1.txt 上传到仓库

1
t1.txt

 

情况二: 不想让,/opt/test/下的 t1.txt 上传

1
/t1.txt

 

情况三: 不想让,所有后缀为txt的文件上传

1
*.txt

 

 情况四:不想让,t2/目录下的文件和目录上传

1
t2/*

 

 情况五:不想让,t3目录上传

1
t2/t3/

 

 情况六:想让,t2/目录下 t3/ 子目录上传

1
!t2/t3/

 或

1
!/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"

  把被忽略的某个文件强制添加回去:
  git add -f filename

  ignore规则检查:
  git check-ignore

4 一些规则
a# 忽略所有 .a 结尾的文件
!lib.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

https://www.jb51.net/article/149021.htm

https://www.cnblogs.com/superfeeling/p/15936393.html

 

posted @   悟透  阅读(4807)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2021-08-26 jsp获取当前目录下的文件和目录,获取windows盘符
点击右上角即可分享
微信分享提示