
- Git 入門
- Git - 首頁
- Git - 版本控制
- Git - 基本概念
- Git - 命令列
- Git - 安裝
- Git - 首次設定
- Git - 基本命令
- Git - 獲取幫助
- Git - 工具
- Git - 速查表
- Git - 術語
- Git 分支
- Git - 簡述分支
- Git - 建立新分支
- Git - 切換分支
- Git - 分支和合並
- Git - 合併衝突
- Git - 管理分支
- Git - 分支工作流程
- Git - 遠端分支
- Git - 追蹤分支
- Git - 變基
- Git - 變基 vs. 合併
- Git - 壓縮提交
- Git 操作
- Git - 克隆操作
- Git - 標籤操作
- Git - 別名操作
- Git - 提交操作
- Git - 暫存操作
- Git - 移動操作
- Git - 重新命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 補丁操作
- Git - Diff 操作
- Git - 狀態操作
- Git - 日誌操作
- Git - HEAD 操作
- Git - origin master
- Git 撤銷
- Git - 撤銷更改
- Git - checkout
- Git - revert
- Git - reset
- Git - 恢復操作
- Git - rm
- Git - switch 操作
- Git - cherry-pick
- Git - amend
- Git 伺服器
- Git - 本地協議
- Git - 智慧 HTTP 協議
- Git - 簡單 HTTP 協議
- Git - SSH 協議
- Git - Git 協議
- Git - 在伺服器上獲取 Git
- Git - 設定伺服器
- Git - Daemon
- Git - GitWeb
- Git - GitLab
- Git - 第三方託管選項
- 分散式 Git
- Git - 分散式工作流程
- Git - 為專案做貢獻
- Git - 維護專案
- 自定義 Git
- Git - 配置
- Git - 鉤子
- Git - 屬性
- Git - init
- Git - commit
自定義 Git - Git 配置
Git 配置非常重要,因為它定義了 Git 在您的系統上的行為。Git 的配置可以在三個不同的級別指定——**系統、全域性**和**本地**。
配置級別
1. 系統級別
配置位於 **[path]/etc/gitconfig**。
包含應用於系統上所有使用者和倉庫的配置。
要編輯此檔案,請使用帶有 **--system** 選項的 **git config**。
git config --system <key> <value>
2. 全域性級別
配置位於 **~/.gitconfig** 或 **~/.config/git/config** 檔案中。
包含應用於當前使用者的配置。
要編輯此檔案,請使用 **--global** 選項。
git config --global <key> <value>
3. 本地級別
配置位於倉庫內的 **.git/config** 檔案中。
包含應用於當前倉庫的配置。
要編輯此檔案,請使用 **--local** 選項或不使用任何選項,因為 **local** 是預設選項。
git config --local <key> <value>
倉庫特定設定優先於使用者特定設定,使用者特定設定優先於系統範圍設定。
此設定層次結構適用於每個級別。
基本客戶端配置
Git 配置選項有兩種型別:伺服器端和客戶端。
大多數設定是客戶端設定,用於確定個人工作偏好。
儘管有許多可能性,但這裡只討論最流行和最實用的設定。
使用以下命令檢視我們 Git 版本的全部選項列表
man git-config
core.editor
Git 預設情況下使用由 **VISUAL** 或 **EDITOR** 環境變數設定的文字編輯器,或者將預設編輯器設定為 vi 用於編輯提交和標籤訊息。
使用 **core.editor** 選項修改當前預設編輯器。
git config --global core.editor emacs
無論我們的首選 shell 編輯器是什麼,Git 都將使用 Emacs 修改訊息。
commit.template
Git 允許我們選擇一個檔案作為建立提交時預設的第一個訊息,方法是使用 **commit.template** 變數。
此模板檔案可以包含有關我們打算使用的提交訊息結構和樣式的提醒和說明。
每次提交時,我們都可以透過使用提交模板來提醒自己或他人預期的訊息格式,這有助於確保一致性。
提交模板作為一條有用的提醒,以保持主題行簡短,在其下方提供指向任何相關問題或錯誤跟蹤器票證的連結,並新增描述性資訊。
在 Git 中配置 **commit.template** 值以建立預設提交訊息模板。
git config --global commit.template ~/.taskmessage.txt git commit
core.pager
可以使用 Git 的 **core.pager** 設定配置顯示來自 **git log** 和 **git diff** 等命令的輸出的分頁程式。
它最初設定為 **less**,但我們可以將其修改為使用其他分頁程式,或者透過將其設定為空字串(**''**)來完全關閉分頁。
如果停用分頁,Git 將列印整個輸出,無論其長度如何,都不會暫停。
git config --global core.pager ''
user.signingkey
當我們使用 Git 的 **user.signingkey** 引數(允許我們提供一個 GPG 金鑰)時,更容易使用預設金鑰來簽名帶註釋的標籤。
我們使用此命令來設定它
git config --global user.signingkey
將 **<gpg-key-id>** 替換為我們的 GPG 金鑰 ID。
配置 **user.signingkey** 後,我們可以使用 **git tag -s <tag-name>** 命令來簽名標籤,而無需每次都提供我們的金鑰。
git tag -s <tag-name>
core.excludesfile
使用 Git,我們可以為應該在我們的機器上所有倉庫中忽略的模式(例如 **.DS_Store** 檔案或臨時編輯器檔案,如 **~** 或 **.swp**)提供一個全域性忽略檔案,方法是使用 **core.excludesfile** 設定。
專案特定的 **.gitignore** 檔案從中受益。
我們可以使用 **core.excludesfile** 引數建立一個全域性 **.gitignore** 檔案(例如 **~/.gitignore_global**),為我們希望 Git 在所有倉庫中忽略的檔案提供模式。
Git 將不會跟蹤或暫存與全域性忽略檔案中指定的模式匹配的檔案,我們使用 **git config --global core.excludesfile ~/.gitignore_global** 來配置它。
*~ .*.swp .DS_Store
help.autocorrect
沒有 **help.autocorrect**:如果我們寫錯了命令,Git 會識別最有可能正確的命令,但不會執行它。
啟用 **help.autocorrect** 後,如果我們將其設定為非零值,Git 將在短暫延遲後自動執行最接近匹配的命令。
例如,如果我們將其設定為 20(或兩秒鐘),我們將得到
git config --global help.autocorrect 20 git commt -m "Fix bug" WARNING: You called a Git command named 'commt', which does not exist. Continuing under the assumption that you meant 'commit' in 2 seconds automatically...
Git 中的顏色
Git 提供彩色終端輸出,使命令結果更容易閱讀,並幫助區分不同型別的資料。
我們可以使用各種設定選項來更改顏色以符合我們的品味。
此功能有助於更快、更清晰地解釋 Git 輸出。
color.ui
Git 中的 **color.ui** 設定控制是否使用彩色輸出。
要停用所有彩色終端輸出,我們可以使用以下命令將其設定為 false:
git config --global color.ui false
當輸出定向到終端時,Git 預設情況下應用顏色;否則,它會省略顏色程式碼。
當輸出路由到檔案或管道時,會應用顏色程式碼。
雖然很少需要,但我們可以將其設定為 **always** 以在所有輸出中包含顏色程式碼。
或者,我們可以根據需要使用命令的 **--color** 引數在重定向輸出中強制使用顏色。
color.*
Git 提供了諸如 **color.branch**、**color.diff**、**color.interactive** 和 **color.status** 等命令特定的顏色選項,為使用者提供了廣泛的顏色靈活性。
我們可以將每個設定設定為 **true**、**false** 或 **always** 來調整在某些 Git 操作中如何使用顏色。
color.branch color.diff color.interactive color.status
Git 使用子設定允許我們更改單個命令輸出段的顏色。
例如,要將 diff 輸出中的額外行格式化為帶有黃色背景和綠色文字的粗體格式,請使用
git config —global color.diff.new "green yellow bold"
我們可以從紅色、藍色或青色等顏色以及粗體、暗淡或下劃線等屬性中進行選擇。
格式和空格
在協作開發中,格式和空格問題可能具有挑戰性,尤其是在跨不同平臺工作時。
不同系統上的不同換行符或編輯器設定可能會導致間距的細微差異。
Git 提供配置選項來幫助處理和解決這些問題。
core.autocrlf
Git 使用 **core.autocrlf** 引數處理不同作業系統之間的換行符問題。
要在檢出程式碼時自動將換行符 (LF) 結尾轉換為回車符 + 換行符 (CRLF),並在將檔案新增到索引時將其轉換回 LF,請在 Windows 上將其設定為 **true**。
透過這樣做,避免了由不同平臺上的不同換行符引起的難題。
git config --global core.autocrlf true
要在提交時讓 Git 將 CRLF 結尾更改為 LF,而不在檢出時將 LF 轉換回 CRLF,請在 Linux 或 macOS 上(其中 LF 換行符是標準)將 **core.autocrlf** 設定為 input。
這在 Windows 檢出中保留了 CRLF,但保證了倉庫和 macOS/Linux 上的 LF 結尾。
git config --global core.autocrlf input
當 **core.autocrlf** 設定為 input 時,在 Windows 檢出中保留 CRLF 結尾,同時在倉庫和 macOS/Linux 上確保 LF 結尾。
如果我們希望為僅限 Windows 的專案在倉庫中保留 CRLF 結尾,請將 **core.autocrlf** 設定為 false。
git config --global core.autocrlf false
core.whitespace
Git 使用六個主要的檢查來識別和解決空格問題。
它預設情況下會啟用對製表符之前的空格、檔案末尾的空行和行尾的空格的檢查。
預設情況下,對行尾的回車符、縮排中的製表符和空格代替製表符的檢查被停用。
使用 **core.whitespace** 配置要啟用或停用的檢查。
選項名稱應以逗號分隔,**-** 表示停用選項。
例如,我們可以將其設定為啟用除製表符之前的空格檢查之外的所有內容。
git config --global core.whitespace \ trailing-space,-space-before-tab,indent-with-non-tab,tab-in-indent,cr-at-eol
我們可以在 **core.whitespace** 設定中僅指定要自定義的部分,而無需列出所有選項。
git config --global core.whitespace \ -space-before-tab,indent-with-non-tab,tab-in-indent,cr-at-eol
Git 透過在 **git diff** 期間檢測和顏色編碼來幫助我們在提交之前解決空格問題。
使用 **--whitespace=warn** 或 **--whitespace=fix**,我們可以在使用 **git apply** 應用補丁時自動解決空格問題或接收警告。
重寫提交時,還可以使用 **--whitespace=fix** 選項來解決 **git rebase** 的空格問題。
git apply --whitespace=warn <patch> git apply --whitespace=fix <patch>
伺服器配置
receive.fsckObjects
Git 可以透過檢查物件的 SHA-1 校驗和以確保它指向一個真實的 物件,在推送期間確認物件的完整性。
由於此驗證可能對效能造成影響,尤其是在處理大型程式碼庫時,因此預設情況下它是停用的。
將receive.fsckObjects設定為true,以便在每次推送後執行此檢查。
git config --system receive.fsckObjects true
receive.denyNonFastForwards
如果我們重新整理已經推送的提交,然後嘗試再次推送(而這些提交不在遠端分支上),Git 將拒絕推送。
使用-f標誌可以克服這個問題並強制更新遠端分支。
將receive.denyNonFastForwards設定為true以阻止這些強制推送。
git config --system receive.denyNonFastForwards true
receive.denyDeletes
將receive.denyDeletes設定為true,以阻止使用者刪除分支或標籤作為denyNonFastForwards策略的變通方法。
git config --system receive.denyDeletes true
為了刪除遠端分支,必須手動從伺服器刪除引用檔案,因為此選項阻止任何分支或標籤的刪除。
建立別名
可以為各種 Git 命令建立快捷方式或別名。請參考以下命令
git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit
檢視配置
要檢視當前配置,可以執行以下命令
# Lists all configurations git config --list # Lists global configurations git config --global --list # Lists local configurations git config --local --list
正確的 Git 配置可以增強您的工作流程並提高協作效率。