第 19 天:設定 .gitignore 忽略清單

本書是 Will 保哥在 2013 第 6 屆 iT 邦幫忙鐵人賽的得獎作品


第 19 天:設定 .gitignore 忽略清單

在開發專案時,工作目錄下可能經常會有新的檔案產生 (可能是透過 Visual Studio 工具產生的那些暫存檔案或快取檔案),可能有許多檔案並不需要列入版本控管,所以必須要排除這些檔案,我們稱為「忽略清單」。

關於 .gitignore 檔案

在 Git 裡面,是透過 .gitignore 檔案來進行定義「忽略清單」,主要的目的是排除一些不需要加入版控的檔案,列在裡面的檔名或路徑 (可包含萬用字元),都不會出現在 git status 的結果中,自然也不會在執行 git add 的時候被加入。不過,這僅限於 Untracked file 而已,那些已經列入版控的檔案 (Staged file),不受 .gitignore 檔案控制。

透過 GitHub 建立預設的忽略清單

如果你曾經在 GitHub 建立過專案,可能會用過這個功能,就在建立新的儲存庫(Repository)時,可以讓你選擇 GitHub 預先幫你定義好的忽略清單,這個忽略清單其實就只是一個檔案而已,其檔名為 .gitignore,並預設置於專案跟目錄下。

image

我們以上圖這個 CSharp 專案為例,建立完成後,在儲存庫中就會出現一個預設的 .gitignore 檔案:

image

我們可以看看其內容:https://github.com/doggy8088/sandbox-csharp/blob/master/.gitignore

# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
[Bb]in/
[Oo]bj/

# mstest test results
TestResults

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results
[Dd]ebug/
[Rr]elease/
x64/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.log
*.vspscc
*.vssscc
.builds

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish

# Publish Web Output
*.Publish.xml

# NuGet Packages Directory
packages

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
[Bb]in
[Oo]bj
sql
TestResults
[Tt]est[Rr]esult*
*.Cache
ClientBin
[Ss]tyle[Cc]op.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML

這些內容,真的就是在用 Visual Studio 寫 CSharp 專案時常見的「忽略清單」,非常具有實用價值,如果各位還有一些額外的檔案名稱或路徑要加入,也可以自行添加在這個檔案裡面。

參考其他程式語言的 .gitignore 內容範本

在 GitHub 上面,事實上還提供了很多其他開發環境所需的 .gitignore 範本,也都非常值得參考:

image

今日小結

今天的 .gitignore 檔案,我們幾乎每個專案都會用到,算是使用 Git 時一個必備的重要檔案。

參考連結