Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
Git cherry-pick 會將變更從一個或多個來源分支的 提交 複製到目標分支。 不同於 合併 或 重新基底,cherry-pick 可讓您選取特定的來源分支提交。 針對您挑選的每個來源分支認可,Git 會在目標分支上建立對應的認可。
您可以精選來處理這些常見的任務:
- 將特定功能從一個分支部署到另一個分支。
- 複製您提交到錯誤的分支上的工作。
- 在多個分支上套用錯誤修正。
如需 Git 工作流程的概觀,請參閱 Azure Repos Git 教學課程。
先決條件
類別 |
需求 |
專案存取 |
專案的成員。 |
許可 |
- 在私人項目中檢視程式碼:至少 基本 權限。 - 複製或貢獻私人專案中的程式碼:作為 貢獻者 安全群組的成員或在專案中具有相應的許可權。 - 設定分支或存放庫許可權:管理分支或存放庫的許可權 許可權。 - 變更預設分支:編輯原則 存放庫的許可權。 - 匯入存放庫:專案管理員成員 安全組或 Git 專案層級 建立存放庫 許可權設定為 允許。 如需詳細資訊,請參閱 設定 Git 存放庫許可權。 |
服務 |
啟用 Repos。 |
工具 |
選擇性。 使用 az repos 命令:Azure DevOps CLI。 |
備註
在公用專案中,具有 項目關係人 存取權的使用者具有 Azure Repos 的完整存取權,包括檢視、複製及參與程式代碼。
類別 |
需求 |
專案存取 |
專案的成員。 |
許可 |
- 查看程式碼:至少 基本 權限。 - 複製程式碼或貢獻程式碼:屬於 參與者安全組 的成員或具有專案中的對應許可權。 |
服務 |
啟用 Repos。 |
挑選指定提交
Azure Repos
Azure Repos 為切入挑選提供有限的支援,而且只為了建立提取要求,在目標分支上套用 Hotfix。 如需詳細資訊,請參閱 改善 Azure DevOps 的挑選提交功能。
Azure Repos 中的拉取要求選單中的 [Cherry-pick] 選項會執行下列動作:
- 從提取要求的目標分支建立新的主題分支。
- 將拉取請求的來源分支中的所有變更擷取至新的主題分支。
- 提示您建立新的提取要求,以將新主題分支合併至另一個目標分支。
如需逐步教學課程,請參閱 使用 cherry-pick 建立新的拉取請求。
GitHub
GitHub 網頁介面不支援挑選提交,但 GitHub Desktop 則支援。 如需如何在 GitHub Desktop 中進行挑選提交的逐步指引,請參閱 挑選提交。
Visual Studio 2022 提供 Git 版本控制體驗,方法是使用 Git 功能表、Git 變更,以及透過 方案總管 中的操作功能表。 Visual Studio 2019 16.8 版也提供 Team Explorer Git 使用者介面。 如需詳細資訊,請參閱 Visual Studio 2019 - Team Explorer 索引標籤。
選擇 [Git > 管理分支 ] 以開啟 [Git 存放庫 ] 視窗。
在 [ Git 存放庫 ] 視窗中,以滑鼠右鍵按兩下目標分支,然後選擇 [ 簽出]。
在 分支 檢視中,滑鼠右鍵點擊來源分支,然後選擇 檢視歷程記錄 以開啟提交 歷程記錄 索引標籤。
在歷史頁籤中,右鍵點擊您想要摘取的提交,然後選擇挑選提交。 Visual Studio 一次不支援挑選多個提交,因此您必須針對每個想要挑選的提交重複此步驟。
Visual Studio 會建立新的目標分支提交,其中包含從挑選提交所做的變更。 如果櫻桃挑選作業未順利完成,Visual Studio 會通知您。
Visual Studio 2019 16.8 版和更新版本提供 Git 版本控制體驗,同時維護 Team Explorer Git 使用者介面。 若要使用Team Explorer,請從功能表列取消勾選 工具>選項>預覽功能 中的 >新增 Git 使用者體驗。 您可以在任一介面中交替使用 Git 功能。
在 [Team Explorer] 中,選取 [ 首頁 ] 按鈕,然後選擇 [ 分支]。
在 [ 分支 ] 檢視中,以滑鼠右鍵按兩下目標分支,然後選擇 [ 簽出]。
在分支檢視中,以滑鼠右鍵點擊來源分支,然後選擇檢視歷程記錄以開啟提交歷程記錄索引標籤。
在 歷史 索引標籤中,以滑鼠右鍵按下您想要挑選的提交,然後選擇 Cherry-Pick。 Visual Studio 不支援一次擷取多個提交,因此您必須針對每個想要擷取的提交重複此步驟。
Visual Studio 會建立一個新的目標分支提交,其中包含從擇取的提交所做的更改。 如果櫻桃挑選作業未順利完成,Visual Studio 會通知您。
使用git log
命令來列出來源分支的提交。 標誌 --oneline
會縮寫提交資訊。
git log --oneline <source branch>
Git 會先列出最最新的提交。 每個提交 ID 都是部分 SHA-1 雜湊,能夠唯一識別該提交。 例如:
e745d06 (HEAD -> add-network-controller) Add a test initialization class
a89f48e (origin/add-network-controller) Add fiber optic transceiver test
31da50b Add network switch test
e74baa2 (origin/main, origin/HEAD, test-fiber-optic-transmitter, main) Add readme content
0c14391 Add readme file
32e3946 Add project files.
請記下您要擷取的提交 ID。
如果尚未取出,請查看目標分支。
git checkout <target branch>
提交、暫存或捨棄任何未提交的變更。
若要挑選單一提交:
git cherry-pick <commit ID>
若要選取多個提交,請以空格分隔提交 ID。 提交將會按照您輸入的順序進行套用。
git cherry-pick <commit1 ID> <commit2 ID> <commit3 ID>
若要挑選包含的認可範圍,請使用^..
點範圍表示法:
git cherry-pick <oldest-commit ID>^..<newest-commit ID>
當您從多個提交中擷取時,預設的擷取指令會建立相應的新目標分支提交序列。 若要告知 Git 暫存且不認可目標分支變更,請使用 -n
旗標:
git cherry-pick -n <commit1 ID> <commit2 ID>
然後,您可以手動建立單一提交,以包含從挑選操作中所有的變更。
Git 會在櫻桃挑選作業期間發生合併衝突時通知您。 您可以 解決衝突 ,然後執行 git cherry-pick --continue
,或執行 git cherry-pick --abort
以復原櫻桃挑選作業。
下一步
相關文章