在 git 中忽略文件 gitignore 与 exclude

时间:2023-02-02 12:20:54
一、在git中如想忽略掉某个文件或文件夹,不让提交到版本库中,可在仓库目录里添加个".gitignore"的文件,这个文件每一行保存了一个匹配的规则,如
# 此为注释 – 将被 Git 忽略
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

二、git提供了一个全局的.gitignore,你可以在你的用户目录下创建 ~/.gitignoreglobal 文件,以同样的规则来划定哪些文件是不需要版本控制的。需要执行“git config --global core.excludesfile ~/.gitignoreglobal”来使得它生效。这里有一个例子:

# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db

三、git还提供了另一种排出的方式来做同样的事情,即在.git/info/exclude这里设置的你要排出的文件。他不会影响到其他人,也不会提交到版本库中去。请注意与第一种方法的区别!

四、.gitignore 还有个有意思的小功能,一个空的 .gitignore 文件可以当作是一个placeholder。如当你需要为项目创建一个空的log目录时,这就变的很有用。使用方法:创建一个log目录在里面放置一个空的.gitignore文件,当你clone这个repo的时候git会自动的创建好一个空的log目录了。


补充:
1、如果已经git add之后想删除某条记录,可以使用git rm来从记录文件里删除记录避免被commit执行。
2、删除以前提交的commit,可push push -f origin。


参考资料:
1、在 git 中忽略文件 gitignore 与 exclude