咱们有时候在多平台开发代码或者批量修改了文件夹的权限时,使用git status
命令你颇有可能会看到一大片的文件变动记录。其实不用担忧,这些只是权限变动的文件也会被显示出来而已。若是你的工程目录不用考虑文件的权限,那么咱们能够关闭这个特性:git
git config core.filemode false
当咱们初始化或者clone
一个git
仓库的时候,会自动生成.git
的目录,默认隐藏,但咱们依然能够查看其文件,其中有一个config
的文件是基础的配置文件:segmentfault
$ cat .git/config [core] # 用于将来可以兼容git版本,决定怎么处理git命令和文件的 repositoryformatversion = 0 # 是否提供文件权限的diff filemode = true # 决定当前仓库是中心仓库仍是开发库 bare = false # 记录全部的ref更新:决定变动ref时,会不会被记录在`$GIT_DIR/logs/<ref>`目录下 logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = ssh://zhaoshuaiqiang@git.com:8235/reposity [branch "master"] remote = origin merge = refs/heads/master
repositoryformatversion
仓库版本如今发布的版本号都是0
,但这个属性是为了将来的兼容性,当开发者认为有新的特性须要加入的时候,能够将这个版本号改成1
,此时,新的Git
版本能够正确执行功能,而老的版本会出现报错:ssh
"Expected git repo version <= 0, found 1. Please upgrade Git"
filemode
文件权限# diff时考虑文件权限为true,不考虑为false core.filemode = true | false
咱们经过这个参数来决定是否会diff
文件的权限,若是是源代码,能够关闭这个选项,若是是脚本、二进制程序等须要权限认证之类的仍是要开启该参数的:fetch
git config core.filemode false
更改完成后再cat
下.git/config
就会发现该参数变了。url
bare
裸仓库咱们可使用git init
来将咱们的目录转换为一个Git
本地仓库或者初始化为一个新仓库。在初始化的时候咱们能够加上--bare
参数来决定是否建立一个裸仓库。code
裸仓库通常指的是远端的中心仓库,能够被clone
和push
更新,但不包含工做区,所以不能执行常规的git
命令,也不能进行直接的提交和变动。而普通仓库却正好相反,用于咱们常规协做开发时的修改和提交。orm
# 裸仓库为true,普通仓库为false core.bare = true | false
logallrefupdates
记录引用更新core.logallupdates = true | false | always
当值为true
时,会将全部引用(ref)
的更新记录到$GIT_DIR/logs/<ref>
中,包括更新的编号、日期和缘由等内容。<ref>
的值根据分支的不一样为refs/heads/
或 refs/remotes/
等。ip
当值为always
时,<ref>
的值为refs/reflog
。开发
当仓库为裸仓库时,值为false
。rem
咱们能够经过文档来了解全部的参数,这里咱们只须要了解bare
和filemode
两个便可,同时filemode
能够经过命令来修改。