Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
您的項目中並非每個檔案都需要由 Git 追蹤。 通常不需要追蹤的檔案範例包括開發環境的暫存盤、測試輸出和記錄。
您可以使用數個機制來通知 Git 不應該追蹤專案中的檔案,並確保 Git 不會報告這些檔案的變更。 對於 Git 未追蹤的檔案,您可以使用 .gitignore
或 exclude
檔案。 針對 Git 已追蹤的檔案,您可以指示 Git 停止追蹤這些檔案,並忽略任何變更。
先決條件
類別 | 需求 |
---|---|
專案存取 | 專案的成員。 |
許可 | - 在私人項目中檢視程式碼:至少 基本 權限。 - 複製或貢獻私人專案中的程式碼:作為 貢獻者 安全群組的成員或在專案中具有相應的許可權。 - 設定分支或存放庫許可權:管理分支或存放庫的許可權 許可權。 - 變更預設分支:編輯原則 存放庫的許可權。 - 匯入存放庫:專案管理員成員 安全組或 Git 專案層級 建立存放庫 許可權設定為 允許。 如需詳細資訊,請參閱 設定 Git 存放庫許可權。 |
服務 | 啟用 Repos。 |
工具 | 選擇性。 使用 az repos 命令:Azure DevOps CLI。 |
備註
在公用專案中,具有 項目關係人 存取權的使用者具有 Azure Repos 的完整存取權,包括檢視、複製及參與程式代碼。
使用 .gitignore 檔案
您可以藉由新增和設定 .gitignore 檔案,告訴 Git 不要追蹤專案中的特定檔案。 檢閱下列重點:
-
未追蹤的檔案:
.gitignore
檔案中的條目僅適用於未追蹤的檔案。 這些設定不會阻止 Git 報告追蹤檔案的變更。 追蹤的檔案是已認可且存在於最後一個 Git 快照中的檔案。 -
檔案搜尋模式:檔案中的每個
.gitignore
行都會指定相對於檔案路徑的.gitignore
檔案搜尋模式。 .gitignore 語法具有彈性,並支援使用通配符,依名稱、擴展名和路徑指定個別或多個檔案。 Git 會.gitignore
比對專案中的檔案搜尋模式,以判斷要忽略的檔案。 -
位置:一般而言,您會將檔案新增
.gitignore
至專案的根資料夾。 不過,您可以將.gitignore
檔案新增至任何項目資料夾,以便讓 Git 知道該資料夾及其子資料夾中任何巢狀深度需要忽略的檔案。 針對多個.gitignore
檔案,檔案在資料夾內指定的檔案搜尋模式.gitignore
優先於檔案在父資料夾內指定的模式.gitignore
。 -
建立:您可以手動建立
.gitignore
檔案,並將檔案模式專案新增至其中。 或者,您可以從 GitHub gitignore 存放庫下載.gitignore
開發環境的範本來節省時間。 -
優點:使用
.gitignore
檔案的優點之一是您可以 提交 變更,並且與其他人共用。
備註
當您建立 Git 存放庫時,Visual Studio 會自動建立 .gitignore
Visual Studio 開發環境的檔案。
Visual Studio 2022 透過 Git 功能表、Git 變更,以及 [方案總管] 中的快捷功能表,提供 Git 版本控制體驗。 Visual Studio 2019 16.8 版也提供 Team Explorer Git 使用者介面。 如需詳細資訊,請參閱 Visual Studio 2019 - Team Explorer 索引標籤。
在 [ Git 變更 ] 視窗中,以滑鼠右鍵按下您想要 Git 忽略的任何已變更檔案,然後選取 [忽略此本機專案 ] 或 [ 忽略此擴展名]。 這些功能表選項在被追蹤的檔案中不存在。
-
忽略此本機項目選項會將新的條目添加到
.gitignore
文件中,並從已變更的檔案清單中移除選取的檔案。 -
[忽略此副檔名] 選項會將新專案新增至
.gitignore
檔案,並從已變更檔案清單中移除所有副檔名與所選檔案相同的檔案。
若存放庫的根資料夾中尚不存在 .gitignore
檔案,任一選項都會建立它並新增一個條目進入該檔案。
編輯 gitignore 檔案
檔案中的每個 .gitignore
專案都是:一個檔案搜尋模式,指定要忽略哪些檔案、以數位符號 (#
) 開頭的批注,或空白行(可讀性)。
語法.gitignore
具有彈性,並支援使用通配符,依名稱、擴展名和路徑指定個別或多個檔案。 檔案搜尋模式的所有路徑都與 .gitignore
檔案相對。
以下是常見檔案搜尋模式的一些範例:
# Ignore all files with the specified name.
# Scope is all repo folders.
config.json
# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json
# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json
# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile
# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile
# Ignore all files in the 'logs' subfolder.
/logs/
一旦您修改檔案 .gitignore
,Git 就會更新它忽略的檔案清單。
備註
Windows 用戶必須使用斜線 (/
) 作為檔案中的 .gitignore
路徑分隔符,而不是使用反斜杠 (\
)。 指定資料夾時,所有使用者都必須新增尾端斜線。
使用全域 .gitignore 檔案
您可以將檔案 .gitignore
指定為套用至所有本機 Git 存放庫的全域忽略檔案。 若要這樣做,請使用 git config
命令,如下所示:
git config core.excludesfile <gitignore file path>
全域 .gitignore
檔案可確保 Git 不會在任何本機存放庫中提交特定檔案類型,例如編譯的二進位檔。 存放庫特定 .gitignore
檔案中的檔案搜尋模式優先於全域 .gitignore
檔案中的模式。
使用排除檔案
您也可以將檔案搜尋模式條目新增到本機存放庫資料夾中的 .git/info/
檔案中。 檔案 exclude
可讓 Git 知道要忽略哪些未追蹤的檔案。 它使用與 .gitignore
檔案相同的搜尋模式語法。
exclude
檔案中的項目僅適用於未追蹤的檔案。 它們不會阻止 Git 報告已追蹤之已認可檔案的變更。 每個存放庫只有一個 exclude
檔案存在。
因為 Git 不會認可或推送 exclude
檔案,所以您可以放心地使用它來忽略本機系統上的檔案,而不會影響其他人。
使用 git update-index 忽略變更
有時候,暫時停止追蹤本機存放庫檔案並讓 Git 忽略檔案的變更會很方便。 例如,您可能想要自定義開發環境的設定檔案,並避免提交變更的風險。 若要這樣做,您可以使用skip-worktree
標記執行git update-index
命令。
git update-index --skip-worktree <file path>
若要繼續追蹤,請使用 --no-skip-worktree
旗標執行 git update-index
命令。
或者,您可以使用 Git 的git update-index
命令搭配assume-unchanged
參數,暫時停止追蹤檔案,並讓 Git 忽略該檔案的變更。 這個選項的效果不如 skip-worktree
旗標,因為變更檔案內容的 Git pull
操作可能會還原 assume-unchanged
旗標。
git update-index --assume-unchanged <file path>
若要繼續追蹤,請使用 --no-assume-unchanged
旗標執行 git update-index
命令。
使用 git rm 忽略變更
.gitignore
或 exclude
檔案中的條目不會影響 Git 已追蹤的檔案。 Git 會追蹤您先前提交的檔案。 若要從 Git 快照集永久移除檔案,讓 Git 不再追蹤檔案,但不要從檔案系統中刪除檔案,請執行下列命令:
git rm --cached <file path>
git commit <some message>
然後,使用 .gitignore
或 exclude
檔案項目來防止 Git 回報檔案的變更。