

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de branches dans des AWS CodeCommit référentiels
<a name="branches"></a>

Qu'est-ce qu'une branche ? Dans Git, les branches sont des pointeurs ou des références à un commit. Dans le développement, ils constituent un moyen pratique d'organiser votre travail. Vous pouvez utiliser des branches pour séparer le travail sur une version nouvelle ou différente des fichiers sans affecter le travail dans les autres branches. Vous pouvez utiliser les branches pour développer de nouvelles fonctionnalités, stocker une version spécifique de votre projet à partir d'une validation particulière, etc. Lorsque vous créez votre premier commit, une *branche par défaut* est créée pour vous. Cette branche par défaut est celle utilisée comme branche de base ou par défaut dans les référentiels locaux (dépôts) lorsque les utilisateurs clonent le référentiel. Le nom de cette branche par défaut varie en fonction de la façon dont vous créez votre premier commit. Si vous ajoutez le premier fichier à votre référentiel à l'aide de la CodeCommit console AWS CLI, le nom, ou l'un des SDKs, de cette branche par défaut est *principal*. Il s'agit du nom de branche par défaut utilisé dans les exemples de ce guide. Si vous envoyez votre premier commit à l'aide d'un client Git, le nom de la branche par défaut est celui spécifié par défaut par le client Git. Envisagez de configurer votre client Git pour qu'il utilise *main* comme nom pour la branche initiale.

Dans CodeCommit, vous pouvez modifier la branche par défaut de votre dépôt. Vous pouvez également créer des branches, les supprimer ou en vérifier les détails. Vous pouvez rapidement comparer les différences entre une branche et la branche par défaut (ou n'importe quelles branches). Pour consulter l'historique des branches et des fusions dans votre référentiel, vous pouvez utiliser le [visualiseur Commit](how-to-view-commit-details.md#how-to-view-commit-details-console-visualizer), illustré dans le graphique suivant.

![\[Vue des branches dans un référentiel\]](http://docs.aws.amazon.com/fr_fr/codecommit/latest/userguide/images/codecommit-cv-complex1.png)


Pour plus d'informations sur l'utilisation d'autres aspects de votre référentiel dans CodeCommit[Utilisation des référentiels](repositories.md), voir[Travailler avec des fichiers](files.md),[Utilisation des demandes d'extraction](pull-requests.md),[Travailler avec des commits](commits.md), et[Utilisation des préférences de l'utilisateur](user-preferences.md). 

**Topics**
+ [Créez une succursale dans AWS CodeCommit](how-to-create-branch.md)
+ [Limitez les pushs et les fusions vers les succursales de AWS CodeCommit](how-to-conditional-branch.md)
+ [Afficher les détails de la succursale dans AWS CodeCommit](how-to-view-branch-details.md)
+ [Comparez et fusionnez des branches dans AWS CodeCommit](how-to-compare-branches.md)
+ [Modifier les paramètres de branche dans AWS CodeCommit](how-to-change-branch.md)
+ [Supprimer une branche dans AWS CodeCommit](how-to-delete-branch.md)

# Créez une succursale dans AWS CodeCommit
<a name="how-to-create-branch"></a>

Vous pouvez utiliser la CodeCommit console ou le AWS CLI pour créer des branches pour votre dépôt. Cette méthode rapide vous permet de séparer le travail sur une version nouvelle ou différente de fichiers sans affecter le travail dans la branche par défaut. Après avoir créé une branche dans la CodeCommit console, vous devez transférer cette modification dans votre dépôt local. Vous pouvez également créer une branche localement, puis utiliser Git à partir d'un dépôt local connecté au CodeCommit référentiel pour appliquer cette modification. 

**Topics**
+ [Création d'une branche (console)](#how-to-create-branch-console)
+ [Création d'une branche (Git)](#how-to-create-branch-git)
+ [Créer une branche (AWS CLI)](#how-to-create-branch-cli)

## Création d'une branche (console)
<a name="how-to-create-branch-console"></a>

Vous pouvez utiliser la CodeCommit console pour créer une branche dans un CodeCommit référentiel. La prochaine fois que les utilisateurs extrairont les modifications du référentiel, ils verront la nouvelle branche.

1. Ouvrez la CodeCommit console sur [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Dans **Référentiels**, sélectionnez le nom du référentiel dans lequel vous voulez créer une branche. 

1. Dans le volet de navigation, choisissez **Branches**.

1. Choisissez **Create branch**.   
![\[Création d'une branche dans la CodeCommit console.\]](http://docs.aws.amazon.com/fr_fr/codecommit/latest/userguide/images/codecommit-branches-create.png)

   Dans **Nom de la branche**, saisissez le nom de la branche. Dans **Branche provenant de**, choisissez une branche ou une balise dans la liste, ou collez un ID de validation. Choisissez **Create branch**.

## Création d'une branche (Git)
<a name="how-to-create-branch-git"></a>

Suivez ces étapes pour utiliser Git depuis un dépôt local afin de créer une branche dans un dépôt local, puis de transférer cette branche vers le CodeCommit référentiel.

Ces étapes sont écrites en supposant que vous avez déjà connecté le dépôt local au CodeCommit référentiel. Pour obtenir des instructions, veuillez consulter [Connexion à un référentiel](how-to-connect.md).

1. Créez une branche dans votre dépôt local en exécutant la **git checkout -b *new-branch-name*** commande, où se *new-branch-name* trouve le nom de la nouvelle branche.

   Par exemple, la commande suivante crée une branche nommée `MyNewBranch` dans le dépôt local :

   ```
   git checkout -b MyNewBranch
   ```

1. Pour transférer la nouvelle branche du dépôt local vers le CodeCommit référentiel, exécutez la **git push** commande en spécifiant à la fois le ***remote-name*** et le***new-branch-name***. 

   Par exemple, pour envoyer une nouvelle branche du dépôt local nommée dans `MyNewBranch` le CodeCommit référentiel avec le surnom `origin` :

   ```
   git push origin MyNewBranch
   ```

**Note**  
Si vous ajoutez l'`-u`option à **git push** (par exemple,**git push -u origin main**), vous pourrez à l'avenir exécuter **git push** sans *remote-name**branch-name*. Des informations de suivi en amont sont définies. Pour obtenir des informations de suivi en amont, exécutez **git remote show *remote-name*** (par exemple, **git remote show origin**).  
Pour afficher une liste de toutes vos branches locales et de suivi distant, exécutez **git branch --all**.  
Pour configurer une branche dans le dépôt local connectée à une branche du CodeCommit référentiel, exécutez**git checkout *remote-branch-name***.

Pour plus d'options, consultez votre documentation Git.

## Créer une branche (AWS CLI)
<a name="how-to-create-branch-cli"></a>

Pour utiliser AWS CLI des commandes avec CodeCommit, installez le AWS CLI. Pour de plus amples informations, veuillez consulter [Référence des commandes en ligne](cmd-ref.md). 

Procédez comme suit pour utiliser le AWS CLI pour créer une branche dans un CodeCommit référentiel, puis transférer cette branche vers le CodeCommit référentiel. Pour savoir comment créer un commit initial et spécifier le nom de la branche par défaut pour un dépôt vide, voir [Créer le premier commit pour un dépôt à l'aide du AWS CLI](how-to-create-commit.md#create-first-commit).

1. Exécutez la commande **create-branch** en indiquant :
   + Le nom du CodeCommit référentiel dans lequel la branche est créée (avec l'**--repository-name**option).
**Note**  
Pour obtenir le nom du CodeCommit dépôt, exécutez la commande [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli).
   + Le nom de la nouvelle branche (avec l'option **--branch-name**).
   + L'ID de la validation sur laquelle la nouvelle branche pointe (avec l'option **--commit-id**).

   Par exemple, pour créer une branche nommée `MyNewBranch` qui pointe vers l'ID de validation `317f8570EXAMPLE` dans un CodeCommit référentiel nommé `MyDemoRepo` :

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

   Cette commande génère une sortie uniquement en cas d’erreurs.

1. Pour mettre à jour la liste des branches de CodeCommit dépôt disponibles dans votre dépôt local avec le nouveau nom de branche distante, exécutez**git remote update *remote-name***.

   Par exemple, pour mettre à jour la liste des branches disponibles pour le CodeCommit référentiel avec le surnom `origin` :

   ```
   git remote update origin 
   ```
**Note**  
Vous pouvez également exécuter la commande **git fetch**. Vous pouvez également afficher toutes les branches distantes en exécutant**git branch --all**, mais tant que vous n'avez pas mis à jour la liste de votre dépôt local, la branche distante que vous avez créée n'apparaît pas dans la liste.   
Pour plus d'options, consultez votre documentation Git.

1. Pour configurer une branche dans le dépôt local connectée à la nouvelle branche du CodeCommit référentiel, exécutez**git checkout *remote-branch-name***.

**Note**  
 Pour obtenir une liste des noms de CodeCommit référentiels et leurs noms URLs, exécutez la **git remote -v** commande.

# Limitez les pushs et les fusions vers les succursales de AWS CodeCommit
<a name="how-to-conditional-branch"></a>

Par défaut, tout utilisateur CodeCommit du référentiel disposant des autorisations suffisantes pour envoyer du code au référentiel peut contribuer à n'importe quelle branche de ce référentiel. Cela est vrai quelle que soit la façon dont vous ajoutiez une branche dans le référentiel : à l'aide de la console, de l'interface de ligne de commande ou de Git. Cependant, vous pouvez vouloir configurer une branche de telle sorte que seuls certains utilisateurs du référentiel puissent transmettre ou fusionner le code sur cette branche. Par exemple, vous pouvez configurer une branche utilisée pour le code de production afin que seul un sous-ensemble des développeurs séniors puissent transmettre ou fusionner les modifications apportées à cette branche. D'autres développeurs peuvent continuer à extraire à partir de la branche, créer leurs propres branches et créer des demandes d'extraction, mais ils ne peuvent pas transmettre ou fusionner les modifications apportées à cette branche. Vous pouvez configurer cet accès en créant une politique conditionnelle qui utilise une clé de contexte pour une ou plusieurs branches dans IAM. 

**Note**  
Pour effectuer certaines des procédures décrites dans cette rubrique, vous devez vous connecter avec un utilisateur administratif disposant des autorisations suffisantes pour configurer et appliquer les politiques IAM. Pour plus d'informations, consultez la section [Création d'un utilisateur et d'un groupe d'administrateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html). 

**Topics**
+ [Configurer une politique IAM pour limiter les transferts et les fusions vers une succursale](#how-to-conditional-branch-create-policy)
+ [Appliquer la politique IAM à un groupe ou à un rôle IAM](#how-to-conditional-branch-apply-policy)
+ [Testez la politique](#how-to-conditional-branch-test)

## Configurer une politique IAM pour limiter les transferts et les fusions vers une succursale
<a name="how-to-conditional-branch-create-policy"></a>

Vous pouvez créer une politique dans IAM qui empêche les utilisateurs de mettre à jour une branche, notamment en transférant des validations vers une branche et en fusionnant des pull requests vers une branche. Pour ce faire, votre stratégie utilise une instruction conditionnelle, de telle sorte que l'effet de l'instruction `Deny` s'applique uniquement si la condition est respectée. Les APIs informations que vous incluez dans la `Deny` déclaration déterminent quelles actions ne sont pas autorisées. Vous pouvez configurer cette politique pour qu'elle s'applique à une seule branche d'un référentiel, à un certain nombre de branches d'un référentiel ou à toutes les branches répondant aux critères de tous les référentiels d'un compte Amazon Web Services. <a name="how-to-conditional-branch-create-policy-procedure"></a>

**Pour créer une stratégie conditionnelle pour les branches**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation, choisissez **Politiques**. 

1. Choisissez **Create Policy** (Créer une politique).

1. Choisissez le format **JSON**, puis collez l'exemple de stratégie suivant. Remplacez la valeur de `Resource` par l'ARN du référentiel qui contient la branche pour laquelle vous voulez limiter l'accès. Remplacez la valeur de `codecommit:References` par une référence à la branche ou aux branches auxquelles vous voulez limiter l'accès. Par exemple, cette politique interdit de transmettre des validations, de fusionner des branches, de supprimer des branches, de supprimer des fichiers, de fusionner des pull requests et d'ajouter des fichiers à une branche nommée *`main`* et à une branche nommée `prod` dans un référentiel nommé : `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"
                   }
               }
           }
       ]
   }
   ```

------

   Les branches dans Git sont simplement des pointeurs (références) vers la valeur SHA-1 de la validation de tête, qui est la raison pour laquelle la condition utilise `References`. L'instruction `Null` est requise dans n'importe quelle stratégie dont l'effet est `Deny` et où `GitPush` est l'une des actions. Elle est obligatoire en raison de la façon dont Git et `git-receive-pack` fonctionnent lors de la transmission des modifications à partir d'un référentiel local vers CodeCommit.
**Astuce**  
Pour créer une politique qui s'applique à toutes les branches nommées main dans tous les référentiels d'un compte Amazon Web Services, remplacez la valeur de `Resource` from a repository ARN par un astérisque ()`*`. 

1. Choisissez **Examiner une politique**. Corrigez les erreurs de votre déclaration de stratégie, puis passez à **Create policy** (Créer une stratégie).

1. Lorsque le fichier JSON est validé, la page **Create policy** s'affiche. Un avertissement s'affiche dans la section **Résumé**, vous informant que cette stratégie n'accorde pas d'autorisations. Ceci est normal. 
   + Dans le champ **Name (Nom)**, saisissez un nom pour cette stratégie, tel que **DenyChangesToMain**.
   + Dans **Description**, saisissez une description de l'objectif de la stratégie. Cette action est facultative, mais recommandée.
   + Choisissez **Create Policy** (Créer une politique).

## Appliquer la politique IAM à un groupe ou à un rôle IAM
<a name="how-to-conditional-branch-apply-policy"></a>

Vous avez créé une politique qui limite les push et les fusions vers une branche, mais elle n'a aucun effet tant que vous ne l'appliquez pas à un utilisateur, un groupe ou un rôle IAM. La meilleure pratique consiste à appliquer la politique à un groupe ou à un rôle IAM. L'application de politiques à des utilisateurs IAM individuels n'est pas adaptée.<a name="how-to-conditional-branch-apply-policy-procedure"></a>

**Pour appliquer la stratégie conditionnelle à un groupe ou un rôle**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. **Dans le volet de navigation, si vous souhaitez appliquer la stratégie à un groupe IAM, choisissez **Groups**. Si vous souhaitez appliquer la stratégie à un rôle assumé par les utilisateurs, choisissez Role.** Choisissez le nom du groupe ou du rôle.

1. Sous l'onglet **Permissions**, choisissez **Attach Policy**.

1. Sélectionnez la stratégie conditionnelle que vous avez créée à partir de la liste des stratégies, puis choisissez **Attach policy (Attacher la stratégie)**.

Pour plus d'informations, consultez la section [Attacher et détacher des politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

## Testez la politique
<a name="how-to-conditional-branch-test"></a>

Vous devez tester les effets de la stratégie que vous avez appliquée sur le groupe ou le rôle pour vous assurer qu'elle fonctionne comme prévu. Il y a plusieurs manières de le faire. Par exemple, pour tester une stratégie similaire à celle indiquée ci-dessus, vous pouvez :
+ Connectez-vous à la CodeCommit console avec un utilisateur IAM membre d'un groupe IAM auquel la politique est appliquée ou qui assume un rôle auquel la stratégie est appliquée. Dans la console, ajoutez un fichier sur la branche où les restrictions s'appliquent. Vous devez voir un message d'erreur lorsque vous tentez d'enregistrer ou de charger un fichier sur cette branche. Ajoutez un fichier à une autre branche. L'opération doit réussir.
+ Connectez-vous à la CodeCommit console avec un utilisateur IAM membre d'un groupe IAM auquel la politique est appliquée ou qui assume un rôle auquel la stratégie est appliquée. Créez une demande d'extraction qui doit être fusionnée avec la branche où les restrictions s'appliquent. Vous devez être en mesure de créer la demande d'extraction, mais que vous obtenez une erreur si vous essayez de fusionner. 
+ À partir du terminal ou de la ligne de commande, créez un commit sur la branche où les restrictions s'appliquent, puis transférez ce commit vers le CodeCommit référentiel. Vous devez voir un message d'erreur. Les validations et transmissions effectuées à partir d'autres branches devraient fonctionner comme d'habitude.

# Afficher les détails de la succursale dans AWS CodeCommit
<a name="how-to-view-branch-details"></a>

Vous pouvez utiliser la CodeCommit console pour afficher les détails relatifs aux branches d'un CodeCommit référentiel. Vous pouvez consulter la date de la dernière validation d'une branche, le message de validation, et bien plus encore. Vous pouvez également utiliser le AWS CLI ou Git à partir d'un dépôt local connecté au CodeCommit référentiel.

**Topics**
+ [Afficher les détails de la succursale (console)](#how-to-view-branch-details-console)
+ [Afficher les détails de la branche (Git)](#how-to-view-branch-details-git)
+ [Afficher les détails de la succursale (AWS CLI)](#how-to-view-branch-details-cli)

## Afficher les détails de la succursale (console)
<a name="how-to-view-branch-details-console"></a>

Utilisez la CodeCommit console pour afficher rapidement la liste des branches de votre référentiel ainsi que les informations relatives à ces branches.

1. Ouvrez la CodeCommit console sur [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Dans **Repositories** (Référentiels), sélectionnez le nom du référentiel dans lequel vous voulez afficher des détails sur les branches. 

1. Dans le volet de navigation, choisissez **Branches**.  
![\[Vue des branches dans un référentiel.\]](http://docs.aws.amazon.com/fr_fr/codecommit/latest/userguide/images/codecommit-branches.png)

1. Le nom de la branche utilisée par défaut pour le référentiel est affiché à côté de **Branche par défaut**. Pour afficher les détails relatifs à la dernière validation apportée à une branche, choisissez le message de validation, puis choisissez **View last commit** (Afficher dernière validation). Pour afficher les fichiers et le code dans une branche, choisissez le nom de cette dernière. 

## Afficher les détails de la branche (Git)
<a name="how-to-view-branch-details-git"></a>

Pour utiliser Git depuis un dépôt local afin d'afficher les détails des branches de suivi locales et distantes d'un CodeCommit référentiel, exécutez la **git branch** commande.

Les étapes suivantes sont écrites en supposant que vous avez déjà connecté le dépôt local au CodeCommit référentiel. Pour obtenir des instructions, veuillez consulter [Connexion à un référentiel](how-to-connect.md).

1. Exécutez la commande **git branch**, en spécifiant l'option **--all** :

   ```
   git branch --all
   ```

1. Si elle aboutit, cette commande renvoie une sortie similaire à ce qui suit :

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

   L'astérisque (`*`) s'affiche à côté de la branche actuellement ouverte. Les entrées après celle-ci sont des références de suivi distant.
**Astuce**  
**git branch** affiche les branches locales.  
**git branch -r** affiche les branches distantes.  
**git checkout *existing-branch-name*** bascule vers le nom de branche spécifié et, si **git branch** est exécuté immédiatement après, s'affiche avec un astérisque (`*`).  
**git remote update *remote-name***met à jour votre dépôt local avec la liste des branches de CodeCommit référentiel disponibles. (Pour obtenir une liste des noms de CodeCommit dépôts et leurs noms URLs, exécutez la **git remote -v** commande.)

Pour plus d'options, consultez votre documentation Git.

## Afficher les détails de la succursale (AWS CLI)
<a name="how-to-view-branch-details-cli"></a>

Pour utiliser AWS CLI des commandes avec CodeCommit, installez le AWS CLI. Pour de plus amples informations, veuillez consulter [Référence des commandes en ligne](cmd-ref.md). 

Pour afficher les détails relatifs AWS CLI aux branches d'un CodeCommit référentiel, exécutez une ou plusieurs des commandes suivantes :
+ Pour afficher la liste des noms de branches, exécutez [list-branches](#how-to-view-branch-details-cli).
+ Pour afficher les informations relatives à une branche spécifique, exécutez [get-branch](#how-to-view-branch-details-cli-details).

### Pour afficher la liste des noms de branche
<a name="how-to-view-branch-details-cli-list"></a>

1. Exécutez la **list-branches** commande en spécifiant le nom du CodeCommit dépôt (avec l'`--repository-name`option).
**Astuce**  
Pour obtenir le nom du CodeCommit dépôt, exécutez la commande [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli).

   Par exemple, pour afficher les détails relatifs aux branches d'un CodeCommit référentiel nommé `MyDemoRepo` :

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

1. Si elle aboutit, cette commande renvoie un objet `branchNameList` avec une entrée pour chaque branche.

   Voici des exemples de sorties basés sur l'exemple de commande précédent :

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

### Pour afficher des informations sur une branche
<a name="how-to-view-branch-details-cli-details"></a>

1. Exécutez la commande **get-branch** en indiquant :
   + Le nom du référentiel (avec l'option **--repository-name**).
   + Le nom de la branche (avec l'option **--branch-name**).

   Par exemple, pour afficher les informations relatives à une branche nommée `MyNewBranch` dans un CodeCommit référentiel nommé `MyDemoRepo` :

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

1. Si elle aboutit, cette commande renvoie le nom de la branche et l'ID de la dernière validation effectuée sur la branche.

   Voici des exemples de sorties basés sur l'exemple de commande précédent :

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

# Comparez et fusionnez des branches dans AWS CodeCommit
<a name="how-to-compare-branches"></a>

Vous pouvez utiliser la CodeCommit console pour comparer les branches d'un CodeCommit référentiel. La comparaison des branches vous permet d'examiner rapidement les différences entre une branche et la branche par défaut, ou entre deux branches quelconques.

**Topics**
+ [Comparer une branche à la branche par défaut](#how-to-compare-branches-default)
+ [Comparez deux branches spécifiques](#how-to-compare-branches-two)
+ [Fusionner deux branches (AWS CLI)](#how-to-merge-branches-cli)

## Comparer une branche à la branche par défaut
<a name="how-to-compare-branches-default"></a>

Utilisez la CodeCommit console pour visualiser rapidement les différences entre une branche et la branche par défaut de votre référentiel.

1. Ouvrez la CodeCommit console sur [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Dans **Référentiels**, sélectionnez le nom du référentiel dans lequel vous voulez comparer des branches. 

1. Dans le volet de navigation, choisissez **Validations**, puis l'onglet **Comparer les validations**.

1. Dans **Destination**, choisissez le nom de la branche par défaut. Dans **Source**, choisissez la branche que vous souhaitez comparer à la branche par défaut. Choisissez **Comparer**.

## Comparez deux branches spécifiques
<a name="how-to-compare-branches-two"></a>

Utilisez la CodeCommit console pour afficher les différences entre les deux branches que vous souhaitez comparer.

1. Ouvrez la CodeCommit console sur [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Dans **Référentiels**, sélectionnez le nom du référentiel dans lequel vous voulez comparer des branches. 

1. Dans le volet de navigation, choisissez **Validations**, puis l'onglet **Comparer les validations**.

1. Dans **Destination** et **Source**, choisissez les deux branches à comparer, puis sélectionnez **Comparer**. Pour afficher la liste des fichiers modifiés, développez la liste correspondante. Pour vérifier les modifications, vous pouvez afficher les modifications côte à côte (vue fractionnée) ou en ligne (vue unifiée).
**Note**  
Si vous êtes connecté en tant qu'utilisateur IAM, vous pouvez configurer et enregistrer vos préférences pour l'affichage du code et d'autres paramètres de console. Pour de plus amples informations, veuillez consulter [Utilisation des préférences de l'utilisateur](user-preferences.md).  
![\[Vue abrégée des différences entre deux branches.\]](http://docs.aws.amazon.com/fr_fr/codecommit/latest/userguide/images/codecommit-compare-branches.png)

## Fusionner deux branches (AWS CLI)
<a name="how-to-merge-branches-cli"></a>

Vous pouvez fusionner deux branches d'un CodeCommit référentiel en AWS CLI utilisant l'une des stratégies de fusion disponibles en exécutant l'une des commandes suivantes :
+ Pour fusionner deux branches à l'aide de la stratégie de fusion rapide, exécutez la commande [**merge-branches-by-fast-forward**](#merge-branches-by-fast-forward).
+ Pour fusionner deux branches à l'aide de la stratégie de fusion d'écrasement, exécutez la commande [**merge-branches-by-squash**](#merge-branches-by-squash).
+ Pour fusionner deux branches à l'aide de la stratégie de fusion tridirectionnelle, exécutez la commande [**merge-branches-by-three-way**](#merge-branches-by-three-way).

Vous pouvez également tester les fusions en exécutant la commande **create-unreferenced-merge-commit**. Pour plus d'informations, consultez [Résolution des conflits dans une demande d'extraction](how-to-resolve-conflict-pull-request.md#create-unreferenced-merge-commit).

**Note**  
Pour utiliser AWS CLI des commandes avec CodeCommit, installez le AWS CLI. Pour de plus amples informations, veuillez consulter [Référence des commandes en ligne](cmd-ref.md). 

**Pour utiliser le AWS CLI pour fusionner deux branches dans un CodeCommit référentiel**

1. <a name="merge-branches-by-fast-forward"></a>Pour fusionner deux branches à l'aide de la stratégie de fusion rapide, exécutez la commande **merge-branches-by-fast-forward** en spécifiant : 
   + Nom de la branche source qui contient les modifications que vous souhaitez fusionner (avec l'option **--source-commit-specifier**). 
   + Nom de la branche de destination dans laquelle vous souhaitez fusionner vos modifications (avec l'option **--destination-commit-specifier**). 
   + Le nom du référentiel (avec l'option **--repository-name**).

    Par exemple, pour fusionner une branche source nommée *bugfix-1234* dans une branche de destination nommée *preprod* dans un référentiel nommé *MyDemoRepo* :

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

   Si elle aboutit, cette commande produit une sortie similaire à ce qui suit :

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

1. <a name="merge-branches-by-squash"></a>Pour fusionner deux branches à l'aide de la stratégie de fusion d'écrasement, exécutez la commande **merge-branches-by-squash**, en spécifiant :
   + Nom de la branche source qui contient les modifications que vous souhaitez fusionner (avec l'option **--source-commit-specifier**). 
   + Nom de la branche de destination dans laquelle vous souhaitez fusionner vos modifications (avec l'option **--destination-commit-specifier**). 
   + Le nom du référentiel (avec l'option **--repository-name**).
   + Le message de validation à inclure (avec l'option **--commit-message**).
   + Le nom à utiliser pour la validation (avec l'option **--name**).
   + L'adresse e-mail à utiliser pour la validation (avec l'option **--email**).

   Par exemple, pour fusionner une branche source nommée *bugfix-bug1234* avec une branche de destination nommée *bugfix-quarterly* dans un référentiel nommé *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
   ```

   Si elle aboutit, cette commande produit une sortie similaire à ce qui suit :

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

1. <a name="merge-branches-by-three-way"></a>Pour fusionner deux branches à l'aide de la stratégie de fusion tridirectionnelle, exécutez la commande **merge-branches-by-three-way** en spécifiant :
   + Nom de la branche source qui contient les modifications que vous souhaitez fusionner (avec l'option **--source-commit-specifier**). 
   + Nom de la branche de destination dans laquelle vous souhaitez fusionner vos modifications (avec l'option **--destination-commit-specifier**). 
   + Le nom du référentiel (avec l'option **--repository-name**).
   + Le message de validation à inclure (avec l'option **--commit-message**).
   + Le nom à utiliser pour la validation (avec l'option **--name**).
   + L'adresse e-mail à utiliser pour la validation (avec l'option **--email**).

   Par exemple, pour fusionner une branche source nommée *main* avec une branche de destination nommée *bugfix-1234* dans un référentiel nommé *MyDemoRepo* :

   ```
   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
   ```

   Si elle aboutit, cette commande produit une sortie similaire à ce qui suit :

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

# Modifier les paramètres de branche dans AWS CodeCommit
<a name="how-to-change-branch"></a>

Vous pouvez modifier la branche à utiliser comme branche par défaut dans la AWS CodeCommit console ou avec le AWS CLI. Par exemple, si vous avez créé votre premier commit à l'aide d'un client Git qui définit la branche par défaut sur *master*, vous pouvez créer une branche nommée *main*, puis modifier les paramètres de la branche afin que la nouvelle branche soit définie comme branche par défaut du référentiel. Pour modifier les autres paramètres de branche, vous pouvez utiliser Git depuis un dépôt local connecté au CodeCommit référentiel. 

**Topics**
+ [Modifier la branche par défaut (console)](#how-to-change-branch-console)
+ [Modifier la branche par défaut (AWS CLI)](#how-to-change-branch-cli)

## Modifier la branche par défaut (console)
<a name="how-to-change-branch-console"></a>

Vous pouvez spécifier quelle branche est la branche par défaut dans un CodeCommit référentiel dans la AWS CodeCommit console. 

1. Ouvrez la CodeCommit console sur [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Dans **Référentiels**, sélectionnez le nom du référentiel dans lequel vous souhaitez modifier les paramètres. 

1. Dans le panneau de navigation, sélectionnez **Settings** (Paramètres).

1. Dans **Branche par défaut**, choisissez la liste déroulante des branches, puis choisissez une autre branche. Choisissez **Enregistrer**.
**Astuce**  
Si aucune autre branche ne figure dans la liste déroulante, cela signifie que vous n'avez créé aucune autre branche. Vous ne pouvez pas modifier la branche par défaut d'un dépôt si celui-ci ne comporte qu'une seule branche. Pour de plus amples informations, veuillez consulter [Créez une succursale dans AWS CodeCommit](how-to-create-branch.md).
Si vous ne voyez pas la section **Branche par défaut**, mais plutôt des éléments relatifs aux règles de notification et aux connexions, vous êtes dans le menu des paramètres généraux de la console. Le menu des paramètres des référentiels est répertorié sous **Référentiels** au même niveau que les requêtes **Code** et **Pull**.

## Modifier la branche par défaut (AWS CLI)
<a name="how-to-change-branch-cli"></a>

Pour utiliser AWS CLI des commandes avec CodeCommit, installez le AWS CLI. Pour de plus amples informations, veuillez consulter [Référence des commandes en ligne](cmd-ref.md). 

 AWS CLI Pour modifier les paramètres de branche d'un dépôt dans un CodeCommit dépôt, exécutez la commande suivante :
+ [update-default-branch](#how-to-change-branch-cli-default) pour modifier la branche par défaut.

### Pour modifier la branche par défaut
<a name="how-to-change-branch-cli-default"></a>

1. Exécutez la commande **update-default-branch** en indiquant :
   + Le nom du CodeCommit référentiel dans lequel la branche par défaut est mise à jour (avec l'**--repository-name**option).
**Astuce**  
Pour obtenir le nom du CodeCommit dépôt, exécutez la commande [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli).
   + Le nom de la nouvelle branche par défaut (avec l'option **--default-branch-name**).
**Astuce**  
Pour obtenir le nom de la branche, exécutez la commande [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli).

1. Par exemple, pour remplacer la branche par défaut par une branche `MyNewBranch` dans un CodeCommit référentiel nommé `MyDemoRepo` :

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

   Cette commande génère une sortie uniquement en cas d’erreurs.

Pour plus d'options, consultez votre documentation Git.

# Supprimer une branche dans AWS CodeCommit
<a name="how-to-delete-branch"></a>

Vous pouvez utiliser la CodeCommit console pour supprimer une branche d'un référentiel. La suppression d'une branche dans CodeCommit ne supprime pas cette branche dans un dépôt local. Les utilisateurs peuvent donc continuer à avoir des copies de cette branche jusqu'à la prochaine modification. Pour supprimer une branche localement et transférer cette modification vers le CodeCommit dépôt, utilisez Git depuis un dépôt local connecté au CodeCommit dépôt. 

La suppression d'une branche ne supprime pas les validations, mais supprime toutes les références aux validations dans cette branche. Si vous supprimez une branche contenant des validations qui n'ont pas été fusionnées dans une autre branche du référentiel, vous ne pouvez pas récupérer ces validations si vous ne disposez pas de leur validation complète IDs. 

**Note**  
Vous ne pouvez pas utiliser les instructions de cette rubrique pour supprimer la branche par défaut d'un référentiel. Si vous souhaitez supprimer la branche par défaut, vous devez créer une branche, faire de la nouvelle branche la branche par défaut et supprimer l'ancienne branche. Pour plus d’informations, consultez [Création d'une branche](how-to-create-branch.md) et [Modifier les paramètres de la branche](how-to-change-branch.md).

**Topics**
+ [Supprimer une branche (console)](#how-to-delete-branch-console)
+ [Supprimer une branche (AWS CLI)](#how-to-delete-branch-cli)
+ [Supprimer une branche (Git)](#how-to-delete-branch-git)

## Supprimer une branche (console)
<a name="how-to-delete-branch-console"></a>

Vous pouvez utiliser la CodeCommit console pour supprimer une branche d'un CodeCommit référentiel. 

1. Ouvrez la CodeCommit console sur [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Dans **Repositories (Référentiels)**, sélectionnez le nom du référentiel dans lequel vous voulez supprimer une branche. 

1. Dans le volet de navigation, choisissez **Branches**.

1. Recherchez le nom de la branche que vous souhaitez supprimer, choisissez **Supprimer la branche**, puis validez votre choix.

## Supprimer une branche (AWS CLI)
<a name="how-to-delete-branch-cli"></a>

Vous pouvez utiliser le AWS CLI pour supprimer une branche d'un CodeCommit référentiel, si cette branche n'est pas la branche par défaut du référentiel. Pour plus d'informations sur l'installation et l'utilisation du AWS CLI, consultez[Référence des commandes en ligne](cmd-ref.md). 

1. Depuis le terminal ou la ligne de commande, exécutez la commande **delete-branch**, en spécifiant :
   + Le nom du CodeCommit dépôt dans lequel la branche doit être supprimée (avec l'**--repository-name**option).
**Astuce**  
Pour obtenir le nom du CodeCommit dépôt, exécutez la commande [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli).
   + Le nom de la branche à supprimer (avec l'option **branch-name**).
**Astuce**  
Pour obtenir le nom de la branche, exécutez la commande [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli).

1. Par exemple, pour supprimer une branche nommée `MyNewBranch` dans un CodeCommit référentiel nommé `MyDemoRepo` :

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

   Cette commande renvoie des informations sur la branche supprimée, y compris son nom et l'ID complet de la validation qui constituait la section HEAD de cette branche. Par exemple :

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

## Supprimer une branche (Git)
<a name="how-to-delete-branch-git"></a>

Suivez ces étapes pour utiliser Git depuis un dépôt local afin de supprimer une branche d'un CodeCommit dépôt.

Ces étapes sont écrites en supposant que vous avez déjà connecté le dépôt local au CodeCommit référentiel. Pour obtenir des instructions, veuillez consulter [Connexion à un référentiel](how-to-connect.md).

1. Pour supprimer la branche du dépôt local, exécutez la **git branch -D *branch-name*** commande contenant *branch-name* le nom de la branche que vous souhaitez supprimer.
**Astuce**  
Pour obtenir une liste de noms de branche, exécutez **git branch --all**.

   Par exemple, pour supprimer une branche du dépôt local nommée `MyNewBranch` :

   ```
   git branch -D MyNewBranch
   ```

1. Pour supprimer la branche du CodeCommit référentiel, exécutez la **git push *remote-name* --delete *branch-name*** commande où *remote-name* est le surnom que le dépôt local utilise pour le CodeCommit référentiel et *branch-name* le nom de la branche que vous souhaitez supprimer du CodeCommit référentiel. 
**Astuce**  
Pour obtenir une liste des noms de CodeCommit référentiels et leurs noms URLs, exécutez la **git remote -v** commande.

   Par exemple, pour supprimer une branche nommée `MyNewBranch` dans le CodeCommit référentiel nommé `origin` :

   ```
   git push origin --delete MyNewBranch
   ```
**Astuce**  
Cette commande ne supprime pas une branche s'il s'agit de la branche par défaut.

Pour plus d'options, consultez votre documentation Git.