共用方式為


在文稿中執行 Git 命令

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

對於某些工作流程,您需要建置管道才能執行 Git 命令。 例如,在功能分支上完成 CI 構建後,小組可能會想要將分支合併至主分支。

Git 適用於 Microsoft 裝載的代理程式 和內部部署代理程式

啟用指令碼以執行 Git 命令

備註

開始之前,請確定您的帳戶預設身分識別已使用下列程式代碼進行設定。 在簽出程式代碼後,這必須作為第一個步驟來完成。

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

將版本控制許可權授與組建服務

  1. 移至您組織的項目設定頁面,[組織設定]>[一般>專案]

    選取您的組織設定。

  2. 選取您要編輯的專案。

    選取您的專案。

  3. [項目設定]內,選取 [存放庫]。 選取您要執行 Git 命令的存放庫。

  4. 選取 [安全性],以編輯您的存放庫安全性。

    選擇 [安全性] 以編輯存放庫安全性。

  5. 搜尋 專案集合建置服務。 選擇身分識別 {{您的項目名稱}} 建置服務 ({您的組織}) (不是群組 專案集合建置服務帳戶 ({您的組織}))。 根據預設,此身分識別可以從存放庫讀取,但無法將任何變更推送回該存放庫。 授與您想要執行之 Git 命令所需的許可權。 通常你會想要給予:

    • 建立分支: 允許
    • 貢獻:允許
    • 讀取: 允許
    • 建立標籤: 允許

允許腳本存取系統令牌

新增 checkout 區段,並將 persistCredentials 設定為 true

steps:
- checkout: self
  persistCredentials: true

深入瞭解 checkout

請務必整理本機存放庫

建置管線不會自動清理本機存放庫中的某些變更類型。 因此請務必:

  • 刪除您建立的本地分支。
  • 復原 git 組態變更。

如果您使用內部部署代理程式遇到問題,請確定存放庫是乾淨的:

請確定 checkoutclean 設定為 true

steps:
- checkout: self
  clean: true

範例

列出存放庫中的檔案

在 [組建] 索引標籤上,新增此工作:

任務 論點

公用程式:命令行
列出 Git 存放庫中的檔案。
工具git

自變數ls-files

將功能分支合併至main

如果您希望 CI 建置在建置成功時合併至 main。

在 [觸發程式] 索引標籤上,選取 [持續整合] [CI],並包含您想要建置的分支。

在檔案庫根目錄創建 merge.bat

@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
   ECHO Building main branch so no merge is needed.
   EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status

在 [組建] 索引標籤上, 將此新增為最後一項工作:

任務 論點

公用程式:批次腳本
執行 merge.bat。
路徑merge.bat

常見問題

如果我的遠端存放庫位於 GitHub 或其他 Git 服務,例如 Bitbucket Cloud,我可以執行 Git 命令嗎?

是的

我可以使用哪些工作來執行 Git 命令?

Batch 腳本

指令行

PowerShell

Shell 腳本

如何避免在腳本推送時觸發 CI 組建?

[skip ci] 新增至您的待提交訊息或描述。 範例如下:

  • git commit -m "This is a commit message [skip ci]"
  • git merge origin/features/hello-world -m "Merge to main [skip ci]"

您也可以使用這些變體來提交至 Azure Repos Git、Bitbucket Cloud、GitHub 和 GitHub Enterprise Server。

  • [skip ci][ci skip]
  • skip-checks: trueskip-checks:true
  • [skip azurepipelines][azurepipelines skip]
  • [skip azpipelines][azpipelines skip]
  • [skip azp][azp skip]
  • ***NO_CI***

我需要代理人嗎?

您需要至少一個 代理程式 來執行組建或發行。

我有問題 如何進行疑難解答?

請參閱 針對建置和發行進行疑難解答

我無法選取預設的代理程式集區,而且無法將組建或發行排入佇列。 我要如何修正此問題?

請參閱 Agent 集區

我的 NuGet 推送任務失敗,發生下列錯誤:「錯誤:無法取得本機簽發者憑證」。 如何修正此問題?

您可以透過新增受信任的根證書來修正此問題。 您可以將 NODE_EXTRA_CA_CERTS=file 環境變數新增至組建代理程式,或者您可以在管線中新增 NODE.EXTRA.CA.CERTS=file 工作變數。 如需此變數的詳細資訊,請參閱 Node.js 檔。 如需在管線中設定變數的指示,請參閱 在管線中設定變數

我使用內部部署的 TFS,但看不到有些功能。 為什麼不呢?

部分功能僅在Azure Pipelines上可用,而尚未在內部部署提供。 如果您已 將某些功能升級至最新版本的 TFS,則某些功能可在內部部署使用。