Git配置文件的經常使用參數解析

咱們有時候在多平臺開發代碼或者批量修改了文件夾的權限時,使用git status命令你頗有可能會看到一大片的文件變動記錄。其實不用擔憂,這些只是權限變動的文件也會被顯示出來而已。若是你的工程目錄不用考慮文件的權限,那麼咱們能夠關閉這個特性:git

git config core.filemode false

git配置文件

當咱們初始化或者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

裸倉庫通常指的是遠端的中心倉庫,能夠被clonepush更新,但不包含工做區,所以不能執行常規的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開發

當倉庫爲裸倉庫時,值爲falserem

總結

咱們能夠經過文檔來了解全部的參數,這裏咱們只須要了解barefilemode兩個便可,同時filemode能夠經過命令來修改。

參考資料

  1. https://stackoverflow.com/que...
  2. git tips: 設置filemode:https://www.jianshu.com/p/3b0...
  3. Git 本地倉庫和裸倉庫:https://segmentfault.com/a/11...
  4. Git文檔:https://git-scm.com/docs/git-...
相關文章
相關標籤/搜索