git 入門教程之忽略檔案

雪之夢技術驛站發表於2019-03-28

忽略檔案

"並不是所有的牛奶都叫特侖蘇",在版本控制系統中也有相似的表達,那就是"並不是所有的檔案都需要提交".

有的是因為沒必要提交,比如日誌檔案,系統快取檔案等,有的是因為不能提交,比如個人隱私檔案,付費文件等.

正常來說,這些檔案都是不應該被提交到版本庫,倘若一不留神提交到版本庫,要麼洩露機密資訊,要是造成經濟損失,要麼對團隊其他人工作造成不便.

有鑑於此,我們應該尋求一種機制來規避事故的發生,在 git 版本控制系統中一般有三種不同的解決方案.

最常用也是最簡單的當屬 .gitignore 檔案,不過先不要著急,我們先了解一下忽略原則和配置規則.

忽略檔案的基本原則

  • 忽略作業系統自動生成的檔案,保持不同作業系統的純粹性和整潔度.
  • 忽略工具軟體自動生成的檔案,避免因個性化配置而產生的工作障礙.
  • 忽略個人隱私配置檔案,除非你願意承擔公開隱私所帶來的潛在風險.

目標: 只提交必要檔案,忽略無用檔案,儘可能考慮多種情況,不給他人制造麻煩.

忽略檔案的配置規則

一行記錄代表一條規則,配置規則僅針對尚未被跟蹤的檔案清單.

# 忽略 `*.a` 檔案
*.a
# 忽略 `*.A` 檔案,但 `somefile.A` 除外.
*.A
!somefile.A

# 忽略 `*.b` 和 `*.B` 檔案
*.[bB]
# 忽略 `*.c` 和 `*.C` 檔案,但 `somefile.C` 除外.
*.[cC]
!somefile.C

# 只忽略 `somepath/` 目錄(包括該目錄下所有檔案),但不忽略 `somepath` 檔案
somepath/
# 只忽略 `somepath/` 一級子目錄下 `*.txt`,但不忽略 `somepath/sub/*.txt` 檔案
somepath/*.txt

# 忽略 `somepath` 檔案和 `somepath` 目錄
somepath
# 只忽略 `somepath` 檔案,但不忽略 `somepath/` 目錄
somepath
!somepath/

# 只忽略當前目錄下的 `somepath` 檔案和目錄,但不忽略子目錄的 `somepath`
/somepath
複製程式碼

說明: # 開頭表示註釋,! 緊跟某規則之後表示增加例外情況

線上示例和幫助文件

提供兩個不錯的線上示例,可以參考下在什麼場景應該忽略哪些檔案以及如何編寫忽略規則.

執行 git help ignore 命令檢視幫助文件

三種設定方式

git 設定忽略檔案有三種方式,如下:

  • 全域性配置檔案(~/.gitignore),執行 git config --global core.excludesfile ~/.gitignore 命令後適用於所有的版本庫.
  • 遠端配置檔案($PWD/.gitignore),編輯 .gitignore 檔案後適用於遠端和本地版本庫.
  • 本地配置檔案($PWD/.git/info/exlude),編輯 $PWD/.git/info/exlude 檔案後適用於本地版本庫.

最常用方式

三種設定方式中,第二種最為常見,另外兩種大致一樣,重點在於配置檔案如何編寫.

建立 .gitignore 檔案

參考線上示例以及基本語法編寫自定義忽略規則

# General
.DS_Store
.AppleDouble
.LSOverride

# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
複製程式碼

提交 .gitignore 檔案

忽略檔案規則配置完畢後,需要將該檔案提交到版本庫,這樣在其他電腦上也能應用相同的忽略規則.

# 新增 `.gitignore` 
git add .gitignore

# 提交 `.gitignore` 
git commit -m "add .gitignore"

# 上傳 `.gitignore`
git push origin master
複製程式碼

驗證忽略效果

新建 .gitignore 檔案中已忽略的檔案,執行 git status 命令,如果提示 working directory clean,那麼說明忽略檔案的配置已經生效,如果工作區不乾淨,很遺憾,忽略檔案配置可能並未生效,需要檢查下哪裡配置錯了.

執行 git check-ignore 命令檢查是哪個配置規則寫錯了,從而我們能夠更正相應的配置規則.

相關文章