咱們有時候在多平臺開發代碼或者批量修改了文件夾的權限時,使用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
能夠經過命令來修改。