

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 AWS CodeCommit 儲存庫中使用分支
<a name="branches"></a>

什麼是分支？ 在 Git 中，分支是遞交的指標或參考。在開發時，分支可讓您的組織工作更輕鬆。您可以使用分支來分隔新版本或不同版本檔案的工作，而不會影響其他分支的工作。您可以使用分支來開發新功能、存放來自特定遞交的特定專案版本等等。當您建立第一個遞交時，會為您建立*預設分支*。此預設分支是在使用者複製儲存庫時，用作本機儲存庫 （儲存庫） 中基本或預設分支的分支。該預設分支的名稱會根據您建立第一個遞交的方式而有所不同。如果您使用 CodeCommit 主控台 AWS CLI、 或其中一個 SDKs 將第一個檔案新增至儲存庫，則該預設分支的名稱會是*主要*的。這是本指南範例中使用的預設分支名稱。如果您使用 Git 用戶端推送第一個遞交，則預設分支的名稱是 Git 用戶端指定為其預設值的名稱。考慮將您的 Git 用戶端設定為使用*主要* 做為初始分支的名稱。

在 CodeCommit 中，您可以變更儲存庫的預設分支。您也可以建立和刪除分支，以及檢視分支的詳細資訊。您可以快速比較某個分支和預設分支 (或任何兩個分支) 的差異。若要檢視儲存庫中分支和合併的歷史記錄，您可以使用[遞交視覺化工具](how-to-view-commit-details.md#how-to-view-commit-details-console-visualizer)，如下圖所示。

![\[儲存庫中的分支檢視\]](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/codecommit-cv-complex1.png)


如需有關在 CodeCommit 中使用儲存庫其他層面的資訊，請參閱 [使用儲存庫](repositories.md)、[使用檔案](files.md)、[使用提取請求](pull-requests.md)、 [使用遞交](commits.md)和 [使用使用者偏好設定](user-preferences.md)。

**Topics**
+ [在 中建立分支 AWS CodeCommit](how-to-create-branch.md)
+ [限制 中的分支推送和合併 AWS CodeCommit](how-to-conditional-branch.md)
+ [在 中檢視分支詳細資訊 AWS CodeCommit](how-to-view-branch-details.md)
+ [比較和合併 中的分支 AWS CodeCommit](how-to-compare-branches.md)
+ [在 中變更分支設定 AWS CodeCommit](how-to-change-branch.md)
+ [在 中刪除分支 AWS CodeCommit](how-to-delete-branch.md)

# 在 中建立分支 AWS CodeCommit
<a name="how-to-create-branch"></a>

您可以使用 CodeCommit 主控台或 AWS CLI 為您的儲存庫建立分支。這是要區隔新的或不同版本的檔案，而不影響預設分支中工作的快速方式。在 CodeCommit 主控台中建立分支之後，您必須將該變更提取至本機儲存庫。或者，您可以在本機建立分支，然後從連線至 CodeCommit 儲存庫的本機儲存庫使用 Git 來推送變更。

**Topics**
+ [建立分支 （主控台）](#how-to-create-branch-console)
+ [建立分支 (Git)](#how-to-create-branch-git)
+ [建立分支 (AWS CLI)](#how-to-create-branch-cli)

## 建立分支 （主控台）
<a name="how-to-create-branch-console"></a>

您可以使用 CodeCommit 主控台在 CodeCommit 儲存庫中建立分支。當使用者下一次從儲存庫提取變更之後，他們會看到新的分支。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要建立分支所在儲存庫的名稱。

1. 在導覽窗格中，選擇 **Branches (分支)**。

1. 選擇 **Create branch (建立分支)**。  
![\[在 CodeCommit 主控台中建立分支。\]](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/codecommit-branches-create.png)

   在 **Branch name (分支名稱)** 中，輸入分支的名稱。在 **Branch from (分支來源)** 中，從清單中選擇分支或標籤，或貼上遞交 ID。選擇 **Create branch (建立分支)**。

## 建立分支 (Git)
<a name="how-to-create-branch-git"></a>

請依照下列步驟，從本機儲存庫使用 Git 在本機儲存庫中建立分支，然後將該分支推送至 CodeCommit 儲存庫。

這些步驟的撰寫假設您已將本機儲存庫連線至 CodeCommit 儲存庫。如需說明，請參閱[連接到儲存庫](how-to-connect.md)。

1. 執行 **git checkout -b *new-branch-name***命令，在本機儲存庫中建立分支，其中 *new-branch-name* 是新分支的名稱。

   例如，下列命令會在本機儲存庫`MyNewBranch`中建立名為 的分支：

   ```
   git checkout -b MyNewBranch
   ```

1. 若要將新的分支從本機儲存庫推送至 CodeCommit 儲存庫，請執行 **git push**命令，同時指定 ***remote-name***和 ***new-branch-name***。

   例如，若要使用別名 將名為 的本機儲存庫中的新分支推送`MyNewBranch`至 CodeCommit 儲存庫`origin`：

   ```
   git push origin MyNewBranch
   ```

**注意**  
如果您將 `-u` 選項新增至 **git push** (例如，**git push -u origin main**)，那麼，在未來您可以執行 **git push** 而不帶 *remote-name* *branch-name*。上游追蹤資訊即已設定。若要取得上游追蹤資訊，請執行 **git remote show *remote-name*** (例如，**git remote show origin**)。  
若要查看所有本機和遠端追蹤分支的清單，請執行 **git branch --all**。  
若要在連線至 CodeCommit 儲存庫中分支的本機儲存庫中設定分支，請執行 **git checkout *remote-branch-name***。

如需更多選項，請參閱 Git 文件。

## 建立分支 (AWS CLI)
<a name="how-to-create-branch-cli"></a>

若要搭配 CodeCommit 使用 AWS CLI 命令，請安裝 AWS CLI。如需詳細資訊，請參閱[命令列參考](cmd-ref.md)。

請依照下列步驟，使用 AWS CLI 在 CodeCommit 儲存庫中建立分支，然後將該分支推送至 CodeCommit 儲存庫。如需建立初始遞交並指定空白儲存庫預設分支名稱的步驟，請參閱[使用 建立儲存庫的第一個遞交 AWS CLI](how-to-create-commit.md#create-first-commit)。

1. 執行 **create-branch** 命令，並指定：
   + 建立分支的 CodeCommit 儲存庫名稱 （使用 **--repository-name**選項）。
**注意**  
若要取得 CodeCommit 儲存庫的名稱，請執行 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 命令。
   + 新分支的名稱 (使用 **--branch-name** 選項)。
   + 新分支指向的遞交 ID (使用 **--commit-id** 選項)。

   例如，若要建立名為 的分支`MyNewBranch`，在名為 的 CodeCommit 儲存庫`317f8570EXAMPLE`中指向遞交 ID`MyDemoRepo`：

   ```
   aws codecommit create-branch --repository-name MyDemoRepo --branch-name MyNewBranch --commit-id 317f8570EXAMPLE
   ```

   只有在發生錯誤時，此命令才會產生輸出。

1. 若要使用新的遠端分支名稱更新本機儲存庫中可用 CodeCommit 儲存庫分支的清單，請執行 **git remote update *remote-name***。

   例如，若要使用別名 更新 CodeCommit 儲存庫的可用分支清單`origin`：

   ```
   git remote update origin 
   ```
**注意**  
或者，您也可以執行 **git fetch** 命令。您也可以執行 檢視所有遠端分支**git branch --all**，但在您更新本機儲存庫的清單之前，您建立的遠端分支不會出現在清單中。  
如需更多選項，請參閱 Git 文件。

1. 若要在連線至 CodeCommit 儲存庫中新分支的本機儲存庫中設定分支，請執行 **git checkout *remote-branch-name***。

**注意**  
 若要取得 CodeCommit 儲存庫名稱及其 URLs的清單，請執行 **git remote -v**命令。

# 限制 中的分支推送和合併 AWS CodeCommit
<a name="how-to-conditional-branch"></a>

根據預設，具有足夠許可將程式碼推送至儲存庫的任何 CodeCommit 儲存庫使用者，都可以對該儲存庫中的任何分支做出貢獻。無論您將分支新增到儲存庫的方式為何：使用主控台、命令列或 Git，都是如此。不過，您可能想要設定分支，使得只有部分儲存庫使用者可以將程式碼推送或合併至該分支。例如，您可能想要設定用於生產程式碼的一個分支，使得只有一組資深開發人員可以將變更推送或合併至該分支。其他開發人員仍可以從分支提取、製作自己的分支，以及建立提取請求，但無法將變更推送或合併至該分支。您可以為 IAM 中的一或多個分支建立使用內容索引鍵的條件式政策來設定此存取權。

**注意**  
若要完成本主題中的某些程序，您必須使用具有足夠許可的管理使用者登入，以設定和套用 IAM 政策。如需詳細資訊，請參閱[建立 IAM 管理員使用者和群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)。

**Topics**
+ [設定 IAM 政策以限制推送和合併至分支](#how-to-conditional-branch-create-policy)
+ [將 IAM 政策套用至 IAM 群組或角色](#how-to-conditional-branch-apply-policy)
+ [測試政策](#how-to-conditional-branch-test)

## 設定 IAM 政策以限制推送和合併至分支
<a name="how-to-conditional-branch-create-policy"></a>

您可以在 IAM 中建立政策，以防止使用者更新分支，包括將遞交推送至分支，以及將提取請求合併至分支。若要這樣做，您的政策會使用條件式陳述式，使得只有在符合條件時，才會套用 `Deny` 陳述式的效果。您在 `Deny` 陳述式中包含的 API 會決定不允許的動作。您可以設定此政策僅套用至儲存庫中的一個分支、儲存庫中的多個分支，或套用至 Amazon Web Services 帳戶中所有儲存庫中符合條件的所有分支。<a name="how-to-conditional-branch-create-policy-procedure"></a>

**為分支建立條件式政策**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**政策**。

1. 選擇 **Create policy** (建立政策)。

1. 選擇 **JSON**，然後將下列範例政策貼上。將 `Resource` 的值取代為包含您要限制存取分支儲存庫的 ARN。將 `codecommit:References` 的值以您要限制存取之一或多個分支的參考取代。例如，此政策拒絕推送遞交、合併分支、刪除分支、刪除檔案、合併提取請求，以及將檔案新增至名為 的分支*`main`*和名為 的儲存庫`prod`中的名為 的分支`MyDemoRepo`：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "codecommit:GitPush",
                   "codecommit:DeleteBranch",
                   "codecommit:DeleteFile",
                   "codecommit:PutFile",
                   "codecommit:MergeBranchesByFastForward",
                   "codecommit:MergeBranchesBySquash",
                   "codecommit:MergeBranchesByThreeWay",
                   "codecommit:MergePullRequestByFastForward",
                   "codecommit:MergePullRequestBySquash",
                   "codecommit:MergePullRequestByThreeWay"
               ],
               "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
               "Condition": {
                   "StringEqualsIfExists": {
                       "codecommit:References": [
                           "refs/heads/main", 
                           "refs/heads/prod"
                        ]
                   },
                   "Null": {
                       "codecommit:References": "false"
                   }
               }
           }
       ]
   }
   ```

------

   Git 中的分支只是標頭遞交 SHA-1 值的指標 (參考)，這是條件使用 `References` 的原因。在效果為 `Deny` 且 `GitPush` 是其中一個動作的任何政策中，`Null` 陳述式為必要。由於從本機儲存庫推送變更至 CodeCommit 時，Git 和 `git-receive-pack`的運作方式，因此這是必要的。
**提示**  
若要建立套用到 Amazon Web Services 帳戶中所有儲存庫中名稱為主要的所有分支的政策，請將 的值`Resource`從儲存庫 ARN 變更為星號 (`*`)。

1. 選擇**檢閱政策**。更正政策陳述式中的任何錯誤，然後繼續 **Create policy (建立政策)**。

1. 當 JSON 經過驗證，隨即會顯示 **Create policy (建立政策)** 頁面。**Summary (摘要)** 區段中會出現警告，建議您此政策將不會授予許可。這是預期的行為。
   + 在 **​Name (名稱)** 中，輸入此政策的名稱，例如 **DenyChangesToMain**。
   + 在 **Description (描述)** 中，輸入政策目的之描述。此為選用操作，但建議您採用。
   + 選擇**建立政策**。

## 將 IAM 政策套用至 IAM 群組或角色
<a name="how-to-conditional-branch-apply-policy"></a>

您已建立限制推送和合併至分支的政策，但在您將其套用至 IAM 使用者、群組或角色之前，該政策不會生效。最佳實務是考慮將政策套用至 IAM 群組或角色。將政策套用至個別 IAM 使用者無法妥善擴展。<a name="how-to-conditional-branch-apply-policy-procedure"></a>

**將條件式政策套用至群組或角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，如果您想要將政策套用到 IAM 群組，請選擇**群組**。如果您想要將政策套用到使用者擔任的角色，請選擇**角色**。選擇群組或角色的名稱。

1. 在 [**權限**] 索引標籤上，選擇 [**連接政策**]。

1. 選取您從策略清單建立的條件政策，然後選擇 **Attach policy (附加政策)**。

如需詳細資訊，請參閱[連接和停用 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

## 測試政策
<a name="how-to-conditional-branch-test"></a>

您應該測試您對群組或角色套用政策的效果，以確保它可如預期運作。您有很多種方法可以執行此操作。例如，若要測試類似以上所示的政策，您可以：
+ 使用已套用政策的 IAM 群組成員身分的 IAM 使用者登入 CodeCommit 主控台，或擔任已套用政策的角色。在主控台中，於套用限制的分支上新增檔案。嘗試將檔案儲存或上傳到該分支時，您應該會看到錯誤訊息。將檔案新增到不同分支。操作應該會成功。
+ 使用已套用政策的 IAM 群組成員身分的 IAM 使用者登入 CodeCommit 主控台，或擔任已套用政策的角色。建立提取請求，其將合併到限制適用所在的分支。您應該可以建立提取請求，但在嘗試合併它時發生錯誤。
+ 從終端機或命令列，在套用限制的分支上建立遞交，然後將該遞交推送到 CodeCommit 儲存庫。您應該會看到錯誤訊息。從其他分支進行的遞交和推送應該可以照常運作。

# 在 中檢視分支詳細資訊 AWS CodeCommit
<a name="how-to-view-branch-details"></a>

您可以使用 CodeCommit 主控台來檢視 CodeCommit 儲存庫中分支的詳細資訊。您可以檢視上次對分支遞交的日期、遞交訊息等等。您也可以從連線至 CodeCommit 儲存庫的本機儲存庫使用 AWS CLI 或 Git。 CodeCommit 

**Topics**
+ [檢視分支詳細資訊 （主控台）](#how-to-view-branch-details-console)
+ [檢視分支詳細資訊 (Git)](#how-to-view-branch-details-git)
+ [檢視分支詳細資訊 (AWS CLI)](#how-to-view-branch-details-cli)

## 檢視分支詳細資訊 （主控台）
<a name="how-to-view-branch-details-console"></a>

使用 CodeCommit 主控台快速檢視儲存庫的分支清單，以及分支的詳細資訊。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要檢視分支詳細資訊所在儲存庫的名稱。

1. 在導覽窗格中，選擇 **Branches (分支)**。  
![\[儲存庫中分支的檢視。\]](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/codecommit-branches.png)

1. 做為儲存庫預設值的分支名稱會顯示在**預設分支**旁。若要查看對分支的最新遞交的詳細資訊，請選擇該分支，然後選擇 **View last commit (檢視上次的遞交)**。若要檢視分支中的檔案和程式碼，請選擇分支名稱。

## 檢視分支詳細資訊 (Git)
<a name="how-to-view-branch-details-git"></a>

若要從本機儲存庫使用 Git 來檢視 CodeCommit 儲存庫的本機和遠端追蹤分支的詳細資訊，請執行 **git branch**命令。

下列步驟的撰寫假設您已將本機儲存庫連線至 CodeCommit 儲存庫。如需說明，請參閱[連接到儲存庫](how-to-connect.md)。

1. 執行 **git branch** 命令，指定 **--all** 選項：

   ```
   git branch --all
   ```

1. 如果此命令成功執行，您會看到類似如下的輸出傳回：

   ```
     MyNewBranch
   * main
     remotes/origin/MyNewBranch
     remotes/origin/main
   ```

   星號 (`*`) 會顯示在目前所開啟分支的名稱旁。後面的項目為遠端追蹤參考。
**提示**  
**git branch** 顯示本機分支。  
**git branch -r** 顯示遠端分支。  
**git checkout *existing-branch-name*** 會切換至指定的分支名稱，並且，如果之後立即執行 **git branch**，顯示它時會加上星號 (`*`)。  
**git remote update *remote-name*** 會使用可用的 CodeCommit 儲存庫分支清單來更新本機儲存庫。（若要取得 CodeCommit 儲存庫名稱及其 URLs的清單，請執行 **git remote -v**命令。)

如需更多選項，請參閱 Git 文件。

## 檢視分支詳細資訊 (AWS CLI)
<a name="how-to-view-branch-details-cli"></a>

若要搭配 CodeCommit 使用 AWS CLI 命令，請安裝 AWS CLI。如需詳細資訊，請參閱[命令列參考](cmd-ref.md)。

若要使用 AWS CLI 檢視 CodeCommit 儲存庫中分支的詳細資訊，請執行下列一或多個命令：
+ 若要檢視分支名稱清單，請執行 [list-branches](#how-to-view-branch-details-cli)。
+ 若要檢視特定分支的相關資訊，請執行 [get-branch](#how-to-view-branch-details-cli-details)。

### 檢視分支名稱的清單
<a name="how-to-view-branch-details-cli-list"></a>

1. 執行 **list-branches**命令，指定 CodeCommit 儲存庫的名稱 （使用 `--repository-name`選項）。
**提示**  
若要取得 CodeCommit 儲存庫的名稱，請執行 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 命令。

   例如，若要檢視名為 的 CodeCommit 儲存庫中分支的詳細資訊`MyDemoRepo`：

   ```
   aws codecommit list-branches --repository-name MyDemoRepo
   ```

1. 如果成功，此命令會輸出 `branchNameList` 物件，每個分支一個項目。

   以下是基於上述範例命令的一些範例輸出：

   ```
   {
       "branches": [
           "MyNewBranch",
           "main"
       ]
   }
   ```

### 檢視特定分支的詳細資訊
<a name="how-to-view-branch-details-cli-details"></a>

1. 執行 **get-branch** 命令，並指定：
   + 儲存庫名稱 (使用 **--repository-name** 選項)。
   + 分支名稱 (使用 **--branch-name** 選項)。

   例如，若要在名為 的 CodeCommit 儲存庫`MyNewBranch`中檢視名為 的分支相關資訊`MyDemoRepo`：

   ```
   aws codecommit get-branch --repository-name MyDemoRepo --branch-name MyNewBranch
   ```

1. 如果成功，此命令會輸出分支的名稱和上次對分支進行遞交的 ID。

   以下是基於上述範例命令的一些範例輸出：

   ```
   {
       "branch": {
             "branchName": "MyNewBranch",
             "commitID": "317f8570EXAMPLE"
       }
   }
   ```

# 比較和合併 中的分支 AWS CodeCommit
<a name="how-to-compare-branches"></a>

您可以使用 CodeCommit 主控台來比較 CodeCommit 儲存庫中的分支。比較分支有助於快速檢視某個分支和預設分支的差異，或檢視任兩個分支間的差異。

**Topics**
+ [比較分支與預設分支](#how-to-compare-branches-default)
+ [比較兩個特定的分支](#how-to-compare-branches-two)
+ [合併兩個分支 (AWS CLI)](#how-to-merge-branches-cli)

## 比較分支與預設分支
<a name="how-to-compare-branches-default"></a>

使用 CodeCommit 主控台快速檢視 分支與儲存庫預設分支之間的差異。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要比較分支所在儲存庫的名稱。

1. 在導覽窗格中，選擇 **Commits (遞交)**，然後選擇 **Compare commits (比較遞交)** 索引標籤。

1. 在 **Destination (目的地)** 中，選擇預設分支的名稱。在 **Source (來源)** 中，選擇您想要與預設分支比較的分支。選擇 **Compare (比較)**。

## 比較兩個特定的分支
<a name="how-to-compare-branches-two"></a>

使用 CodeCommit 主控台檢視您要比較的兩個分支之間的差異。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要比較分支所在儲存庫的名稱。

1. 在導覽窗格中，選擇 **Commits (遞交)**，然後選擇 **Compare commits (比較遞交)** 索引標籤。

1. 在 **Destination (目的地)** 和 **Source (來源)** 中，選擇要比較的兩個分支，然後選擇 **Compare (比較)**。若要檢視變更的檔案清單，請展開變更的檔案清單。您可以透過左右並排 (分割檢視) 或內嵌 (統一檢視) 來檢視檔案中的變更。
**注意**  
如果您以 IAM 使用者身分登入，則可以設定和儲存您的偏好設定，以檢視程式碼和其他主控台設定。如需詳細資訊，請參閱[使用使用者偏好設定](user-preferences.md)。  
![\[兩個分支之間差異的縮寫檢視。\]](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/codecommit-compare-branches.png)

## 合併兩個分支 (AWS CLI)
<a name="how-to-merge-branches-cli"></a>

您可以使用其中一個可用的合併策略，透過執行下列其中一個命令， AWS CLI 在 CodeCommit 儲存庫中合併兩個分支：
+ 若要使用向前快轉合併策略來合併兩個分支，請執行 [**merge-branches-by-fast-forward**](#merge-branches-by-fast-forward) 命令。
+ 若要使用 squash 合併策略來合併兩個分支，請執行 [**merge-branches-by-squash**](#merge-branches-by-squash) 命令。
+ 若要使用三向合併策略來合併兩個分支，請執行 [**merge-branches-by-three-way**](#merge-branches-by-three-way) 命令。

您也可以執行 **create-unreferenced-merge-commit** 命令來測試合併。如需詳細資訊，請參閱[解決提取請求中的衝突](how-to-resolve-conflict-pull-request.md#create-unreferenced-merge-commit)。

**注意**  
若要搭配 CodeCommit 使用 AWS CLI 命令，請安裝 AWS CLI。如需詳細資訊，請參閱[命令列參考](cmd-ref.md)。

**使用 在 CodeCommit AWS CLI 儲存庫中合併兩個分支**

1. <a name="merge-branches-by-fast-forward"></a>若要使用向前快轉合併策略來合併兩個分支，請執行 **merge-branches-by-fast-forward** 命令，並指定：
   + 包含您要合併之變更的來源分支名稱 (使用 **--source-commit-specifier** 選項)。
   + 您要合併變更的目的地分支名稱 (使用 **--destination-commit-specifier** 選項)。
   + 儲存庫的名稱 (使用 **--repository-name** 選項)。

    例如，若要在名為 *MyDemoRepo* 的儲存庫中，將名為 *bugfix-1234* 的來源分支合併至名為 *preprod* 的目的地分支：

   ```
   aws codecommit merge-branches-by-fast-forward --source-commit-specifier bugfix-bug1234 --destination-commit-specifier preprod --repository-name MyDemoRepo
   ```

   如果此命令成功執行，您會看到類似如下的輸出產生：

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```

1. <a name="merge-branches-by-squash"></a>若要使用 squash 合併策略來合併兩個分支，請執行 **merge-branches-by-squash** 命令，指定：
   + 包含您要合併之變更的來源分支名稱 (使用 **--source-commit-specifier** 選項)。
   + 您要合併變更的目的地分支名稱 (使用 **--destination-commit-specifier** 選項)。
   + 儲存庫的名稱 (使用 **--repository-name** 選項)。
   + 要包含的遞交訊息 (使用 **--commit-message** 選項)。
   + 用於遞交的名稱 (使用 **--name** 選項)。
   + 用於遞交的電子郵件地址 (使用 **--email** 選項)。

   例如，若要將名為 *bugfix-1234* 的來源分支合併到名為 *bugfix-quarterly* 的目的地分支 (位於名為 *MyDemoRepo* 的儲存庫中)：

   ```
   aws codecommit merge-branches-by-squash --source-commit-specifier bugfix-bug1234 --destination-commit-specifier bugfix-quarterly --author-name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Merging in fix branches to prepare for a general patch." --repository-name MyDemoRepo
   ```

   如果此命令成功執行，您會看到類似如下的輸出產生：

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```

1. <a name="merge-branches-by-three-way"></a>若要使用三向合併策略來合併兩個分支，請執行 **merge-branches-by-three-way** 命令，並指定：
   + 包含您要合併之變更的來源分支名稱 (使用 **--source-commit-specifier** 選項)。
   + 您要合併變更的目的地分支名稱 (使用 **--destination-commit-specifier** 選項)。
   + 儲存庫的名稱 (使用 **--repository-name** 選項)。
   + 要包含的遞交訊息 (使用 **--commit-message** 選項)。
   + 用於遞交的名稱 (使用 **--name** 選項)。
   + 用於遞交的電子郵件地址 (使用 **--email** 選項)。

   例如，若要在名為 *MyDemoRepo* 的儲存庫中合併名為 *main* 的來源分支與名為 *bugfix-1234* 的目的地分支：

   ```
   aws codecommit merge-branches-by-three-way --source-commit-specifier main --destination-commit-specifier bugfix-bug1234 --author-name "Jorge Souza" --email "jorge_souza@example.com" --commit-message "Merging changes from main to bugfix branch before additional testing."  --repository-name MyDemoRepo
   ```

   如果此命令成功執行，您會看到類似如下的輸出產生：

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```

# 在 中變更分支設定 AWS CodeCommit
<a name="how-to-change-branch"></a>

您可以變更要使用哪個分支做為 AWS CodeCommit 主控台或 的預設分支 AWS CLI。例如，如果您使用將預設分支設定為*主要*的 Git 用戶端建立第一個遞交，您可以建立名為*主要*的分支，然後變更分支設定，讓新的分支設定為儲存庫的預設分支。若要變更其他分支設定，您可以從連線至 CodeCommit 儲存庫的本機儲存庫使用 Git。

**Topics**
+ [變更預設分支 （主控台）](#how-to-change-branch-console)
+ [變更預設分支 (AWS CLI)](#how-to-change-branch-cli)

## 變更預設分支 （主控台）
<a name="how-to-change-branch-console"></a>

您可以在 AWS CodeCommit 主控台中指定哪個分支是 CodeCommit 儲存庫中的預設分支。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要變更設定所在的儲存庫名稱。

1. 在導覽窗格中，選擇**設定**。

1. 在 **Default branch (預設分支)** 中選擇分支下拉式清單，然後選擇不同的分支。選擇**儲存**。
**提示**  
如果您在下拉式清單中沒有看到其他分支，表示您尚未建立任何其他分支。如果儲存庫只有一個分支，則您無法變更儲存庫的預設分支。如需詳細資訊，請參閱[在 中建立分支 AWS CodeCommit](how-to-create-branch.md)。
如果您沒有看到**預設分支**區段，而是看到通知規則和連線的項目，則位於主控台的一般設定選單中。儲存庫的設定選單會列在與**程式碼**和**提取請求**相同層級的**儲存庫**下。

## 變更預設分支 (AWS CLI)
<a name="how-to-change-branch-cli"></a>

若要搭配 CodeCommit 使用 AWS CLI 命令，請安裝 AWS CLI。如需詳細資訊，請參閱[命令列參考](cmd-ref.md)。

若要使用 AWS CLI 變更 CodeCommit 儲存庫中的儲存庫分支設定，請執行下列命令：
+ [update-default-branch](#how-to-change-branch-cli-default) 變更預設分支。

### 變更預設的分支
<a name="how-to-change-branch-cli-default"></a>

1. 執行 **update-default-branch** 命令，並指定：
   + 更新預設分支的 CodeCommit 儲存庫名稱 （使用 **--repository-name**選項）。
**提示**  
若要取得 CodeCommit 儲存庫的名稱，請執行 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 命令。
   + 新預設分支的名稱 (使用 **--default-branch-name** 選項)。
**提示**  
若要取得分支的名稱，請執行 [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli) 命令。

1. 例如，若要在名為 的 CodeCommit 儲存庫`MyNewBranch`中將預設分支變更為 `MyDemoRepo`：

   ```
   aws codecommit update-default-branch --repository-name MyDemoRepo --default-branch-name MyNewBranch
   ```

   只有在發生錯誤時，此命令才會產生輸出。

如需更多選項，請參閱 Git 文件。

# 在 中刪除分支 AWS CodeCommit
<a name="how-to-delete-branch"></a>

您可以使用 CodeCommit 主控台來刪除儲存庫中的分支。在 CodeCommit 中刪除分支不會刪除本機儲存庫中的該分支，因此使用者可能會繼續擁有該分支的副本，直到下次提取變更為止。若要在本機刪除分支並將變更推送至 CodeCommit 儲存庫，請從連線至 CodeCommit 儲存庫的本機儲存庫使用 Git。

刪除分支不會刪除任何遞交，但會刪除對該分支中遞交的所有參考。如果您刪除分支 (其中包含尚未合併到儲存庫中另一個分支的遞交)，除非您有其完整的遞交 ID，否則無法擷取這些遞交。

**注意**  
您不能使用這個主題中的指示來刪除儲存庫的預設分支。如果您要刪除預設分支，必須建立分支，讓新分支成為預設分支，然後刪除舊分支。如需詳細資訊，請參閱[建立分支](how-to-create-branch.md)及[變更分支設定](how-to-change-branch.md)。

**Topics**
+ [刪除分支 （主控台）](#how-to-delete-branch-console)
+ [刪除分支 (AWS CLI)](#how-to-delete-branch-cli)
+ [刪除分支 (Git)](#how-to-delete-branch-git)

## 刪除分支 （主控台）
<a name="how-to-delete-branch-console"></a>

您可以使用 CodeCommit 主控台來刪除 CodeCommit 儲存庫中的分支。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要刪除分支所在的儲存庫名稱。

1. 在導覽窗格中，選擇 **Branches (分支)**。

1. 尋找您要刪除的分支名稱，然後選擇 **Delete branch (刪除分支)** 並確認您的選擇。

## 刪除分支 (AWS CLI)
<a name="how-to-delete-branch-cli"></a>

您可以使用 AWS CLI 刪除 CodeCommit 儲存庫中的分支，如果該分支不是儲存庫的預設分支。如需安裝和使用 的詳細資訊 AWS CLI，請參閱 [命令列參考](cmd-ref.md)。

1. 在終端機或命令列，執行 **delete-branch** 命令，並指定：
   + 要刪除分支的 CodeCommit 儲存庫名稱 （使用 **--repository-name**選項）。
**提示**  
若要取得 CodeCommit 儲存庫的名稱，請執行 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 命令。
   + 要刪除的分支的名稱 (使用 **branch-name** 選項)。
**提示**  
若要取得分支的名稱，請執行 [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli) 命令。

1. 例如，若要在名為 的 CodeCommit 儲存庫`MyNewBranch`中刪除名為 的分支`MyDemoRepo`：

   ```
   aws codecommit delete-branch --repository-name MyDemoRepo --branch-name MyNewBranch
   ```

   此命令會傳回有關已刪除分支的詳細資訊，包括已刪除的分支名稱和屬於分支標頭之遞交的完整遞交 ID。例如：

   ```
   "deletedBranch": {
       "branchName": "MyNewBranch",
       "commitId": "317f8570EXAMPLE"
   }
   ```

## 刪除分支 (Git)
<a name="how-to-delete-branch-git"></a>

請依照下列步驟，從本機儲存庫使用 Git 刪除 CodeCommit 儲存庫中的分支。

這些步驟的撰寫假設您已將本機儲存庫連線至 CodeCommit 儲存庫。如需說明，請參閱[連接到儲存庫](how-to-connect.md)。

1. 若要從本機儲存庫刪除分支，請執行 **git branch -D *branch-name***命令，其中 *branch-name* 是您想要刪除的分支名稱。
**提示**  
若要取得分支名稱的清單，請執行 **git branch --all**。

   例如，若要刪除本機儲存庫中名為 的分支`MyNewBranch`：

   ```
   git branch -D MyNewBranch
   ```

1. 若要從 CodeCommit 儲存庫刪除分支，請執行 **git push *remote-name* --delete *branch-name***命令，其中 *remote-name* 是本機儲存庫用於 CodeCommit 儲存庫的別名，而 *branch-name* 是您要從 CodeCommit 儲存庫刪除的分支名稱。
**提示**  
若要取得 CodeCommit 儲存庫名稱及其 URLs的清單，請執行 **git remote -v**命令。

   例如，若要在名為 的 CodeCommit 儲存庫`MyNewBranch`中刪除名為 的分支`origin`：

   ```
   git push origin --delete MyNewBranch
   ```
**提示**  
如果分支是預設分支，則此命令不會刪除該分支。

如需更多選項，請參閱 Git 文件。