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

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

git config core.filemode false

今天我們介紹下git常用的一些配置參數。

git配置文件

當我們初始化或者clone一個git倉庫的時候,會自動生成.git的目錄,默認隱藏,但我們依然可以查看其文件,其中有一個config的文件是基礎的配置文件:

$ 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://[email protected]:8235/reposity
[branch "master"]
    remote = origin
    merge = refs/heads/master

repositoryformatversion 倉庫版本

現在發佈的版本號都是0,但這個屬性是爲了未來的兼容性,當開發者認爲有新的特性需要加入的時候,可以將這個版本號改爲1,此時,新的Git版本可以正確執行功能,而老的版本會出現報錯:

"Expected git repo version <= 0, found 1. Please upgrade Git"

filemode 文件權限

# diff時考慮文件權限爲true,不考慮爲false
core.filemode = true | false

我們通過這個參數來決定是否會diff文件的權限,如果是源代碼,可以關閉這個選項,如果是腳本、二進制程序等需要權限認證之類的還是要開啓該參數的:

git config core.filemode false

更改完成後再cat.git/config就會發現該參數變了。

bare 裸倉庫

我們可以使用git init來將我們的目錄轉換爲一個Git本地倉庫或者初始化爲一個新倉庫。在初始化的時候我們可以加上--bare參數來決定是否創建一個裸倉庫。

裸倉庫一般指的是遠端的中心倉庫,可以被clonepush更新,但不包含工作區,因此不能執行常規的git命令,也不能進行直接的提交和變更。而普通倉庫卻正好相反,用於我們常規協作開發時的修改和提交。

# 裸倉庫爲true,普通倉庫爲false
core.bare = true | false

logallrefupdates 記錄引用更新

core.logallupdates = true | false | always

當值爲true時,會將所有引用(ref)的更新記錄到$GIT_DIR/logs/<ref>中,包括更新的編號、日期和原因等內容。<ref>的值根據分支的不同爲refs/heads/refs/remotes/等。

當值爲always時,<ref>的值爲refs/reflog

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

總結

我們可以通過文檔來了解所有的參數,這裏我們只需要瞭解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-...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章