# Contribution à un projet

Découvrez comment contribuer à un projet par le biais de la duplication.

Contribuer à un projet sur GitHub est une compétence essentielle pour les développeurs et les collaborateurs qui collaborent pour atteindre des objectifs communs. Que vous corrigiez des bogues, ajoutiez des fonctionnalités ou amélioriez la documentation, le processus de contribution garantit une collaboration structurée et efficace.

En suivant le flux GitHub de fork des dépôts, de création de branches et de soumission de pull requests, vous pouvez proposer des modifications à un projet et recevoir des commentaires sans perturber le travail d'autres personnes.

Ce guide fournit des instructions sur la contribution à un projet à l’aide de l’interface utilisateur GitHub et de la ligne de commande. Pour plus d’informations sur la contribution avec GitHub Desktop, consultez [Clonage et duplication (fork) de dépôts à partir de GitHub Desktop](/fr/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop). Pour la même chose avec GitHub CLI (interface de ligne de commande), consultez [Démarrage rapide de l’interface CLI GitHub](/fr/enterprise-server@3.22/github-cli/github-cli/quickstart).

## À propos de la duplication (fork)

Si vous souhaitez contribuer au projet de quelqu'un d'autre mais que vous n'avez pas l'autorisation d'y apporter des modifications directement, vous pouvez créer votre propre copie du projet, y apporter des mises à jour, puis suggérer que ces mises à jour soient incluses dans le projet principal. Ce procédé est généralement désigné sous le nom de workflow « fork and pull » (fork puis demande de pull).

Lorsque vous créez votre propre copie (ou « duplication ») d'un projet, cela revient à créer un nouvel espace de travail qui partage le code avec le projet d'origine. Cette fonction est utile pour les projets à code source ouvert ou lorsque vous n'avez pas accès en écriture au projet original.

Une fois que vous avez effectué vos modifications dans votre copie, vous pouvez les soumettre sous forme de pull request, qui permet de proposer des modifications au projet principal. Pour plus d’informations, consultez « [Dupliquer un référentiel](/fr/enterprise-server@3.22/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) ».

## Création de votre propre copie d’un projet

Ce tutoriel utilise [le projet Spoon-Knife](https://github.com/octocat/Spoon-Knife), un dépôt de test hébergé sur GitHub qui vous permet de tester le flux de travail de duplication (fork) et de proposition de modification (pull request).

1. Accédez au projet `Spoon-Knife` à <https://github.com/octocat/Spoon-Knife>.
2. Dans le coin supérieur droit de la page, cliquez sur **Dupliquer**.

   ![Capture d’écran de la page principale d’un dépôt. Un bouton, étiqueté avec une icône de fork et « Fork 59.3k », est encadré en orange foncé.](/assets/images/help/repository/fork-button.png)
3. Sous « Propriétaire », sélectionnez le menu déroulant et cliquez sur un propriétaire pour le dépôt dupliqué.
   > \[!NOTE] Si votre nom d’utilisateur est grisé, c’est parce que le fork existe déjà. Vous devriez plutôt actualiser votre fork existant. Pour plus d’informations, consultez « [Synchronisation d’une duplication](/fr/enterprise-server@3.22/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork#syncing-a-fork-branch-from-the-web-ui) ».
4. Par défaut, les duplications ont le même nom que leurs référentiels en amont. Si vous le souhaitez, pour mieux distinguer votre duplication, dans le champ « Nom du dépôt », tapez un nom.
5. Optionnellement, dans le champ « Description », vous pouvez saisir une description de votre fork.
6. Si vous le souhaitez, sélectionnez **Copier la branche PAR DÉFAUT uniquement**.

   Dans de nombreux scénarios de duplication, tels que la contribution à des projets open source, vous devez uniquement copier la branche par défaut. Si vous ne sélectionnez pas cette option, toutes les branches seront copiées dans le nouveau fork.
7. Cliquez sur **Créer une duplication**.

> \[!NOTE]
> Si vous souhaitez copier des branches supplémentaires à partir du référentiel en amont, vous pouvez le faire depuis la page **Branches**. Pour plus d’informations, consultez « [Gestion des branches au sein de votre référentiel](/fr/enterprise-server@3.22/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository) ».

## Cloner un fork sur votre ordinateur

Vous avez réussi à forker le référentiel Spoon-Knife, mais pour l'instant, il n'existe que sur GitHub. Pour pouvoir travailler sur le projet, vous avez besoin de le cloner sur votre ordinateur.

Vous pouvez cloner votre duplication (fork) avec la ligne de commande, GitHub CLI ou GitHub Desktop.

1. Sur GitHub, naviguez vers **votre fork** du référentiel Spoon-Knife.

2. Au-dessus de la liste de fichiers, cliquez sur **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code" aria-label="code" role="img"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg> Code**.

   ![Capture d’écran de la liste des fichiers dans la page d’accueil d’un dépôt. Le bouton « Code » est mis en évidence avec un encadré orange foncé.](/assets/images/help/repository/code-button.png)

3. Copiez l’URL du dépôt.

   * Pour cloner le référentiel en utilisant HTTPS, sous « HTTPS », cliquez sur <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-copy" aria-label="Copier dans le presse-papiers" role="img"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg>.
   * Pour cloner le dépôt avec une clé SSH, en incluant un certificat émis par l’autorité de certification SSH de votre organisation, cliquez sur **SSH** et sur <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-copy" aria-label="Copy to clipboard" role="img"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg>.
   * Pour cloner un dépôt avec l’GitHub CLI, cliquez sur **GitHub CLI** et sur <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-copy" aria-label="Copy to clipboard" role="img"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg>.

     ![Capture d’écran du menu déroulant « Code ». À droite de l’URL HTTPS du dépôt, une icône de copie est indiquée en orange foncé.](/assets/images/help/repository/https-url-clone-cli.png)

4. Sur Mac ou Linux, ouvrez Terminal. Sur Windows, ouvrez Git Bash.

5. Remplacez le répertoire de travail actuel par l’emplacement où vous voulez mettre le répertoire cloné.

6. Tapez `git clone`, puis collez l’URL que vous avez copiée précédemment. Voici ce à quoi cela ressemble, avec votre nom d’utilisateur GitHub au lieu de `YOUR-USERNAME` :

   ```shell
   git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
   ```

7. **Appuyez sur Entrée**. Votre clone local va être créé.

   ```shell
   $ git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
   > Cloning into `Spoon-Knife`...
   > remote: Counting objects: 10, done.
   > remote: Compressing objects: 100% (8/8), done.
   > remove: Total 10 (delta 1), reused 10 (delta 1)
   > Unpacking objects: 100% (10/10), done.
   ```

## Création d’une branche sur laquelle travailler

Avant d’effectuer des modifications dans le projet, vous devez créer une nouvelle branche puis la vérifier. En conservant les modifications dans une branche distincte, vous respectez le flux de travail GitHub et facilitez les contributions futures au même projet. Consultez « [flux de GitHub](/fr/enterprise-server@3.22/get-started/using-github/github-flow#following-github-flow) ».

```shell
git branch BRANCH-NAME
git checkout BRANCH-NAME
```

## Apporter et pousser (push) des modifications

Poursuivez en apportant quelques modifications au projet à l’aide de votre éditeur de texte favori, comme [Visual Studio Code](https://code.visualstudio.com). Vous pouvez, par exemple, modifier le texte `index.html` pour ajouter votre GitHub nom d'utilisateur.

Quand vous êtes prêt à soumettre vos modifications, préparez-les et validez-les.
`git add .` indique à Git que vous voulez inclure toutes vos modifications dans le commit suivant.
`git commit` prend un instantané de ces modifications.

```shell
git add .
git commit -m "a short description of the change"
```

Quand vous indexez et commitez des fichiers, vous indiquez grosso modo à Git de prendre un instantané de vos modifications. Vous pouvez continuer à apporter d’autres modifications et prendre d’autres instantanés de commit.

Pour le moment, vos modifications existent uniquement en local. Lorsque vous êtes prêt à pousser vos changements vers GitHub, poussez vos changements vers le serveur distant.

```shell
git push
```

## Déroulement d’une demande de tirage

La création d’une demande de tirage constitue l’étape finale du processus consistant à produire un fork du projet d’un autre utilisateur. Lorsque vous avez apporté une modification utile et que vous souhaitez la proposer au dépôt d'origine, vous créez un pull request pour qu’un responsable puisse la passer en revue.

Pour ce faire, accédez au référentiel sur GitHub où se trouve votre projet. Dans cet exemple, il s’agit de `https://github.com/<your_username>/Spoon-Knife`. Vous allez voir une bannière indiquant que votre branche a un commit d’avance sur `octocat:main`. Cliquez sur **Contribuer**, puis **Ouvrir une pull request**.

GitHub vous amènera à une page qui montre les différences entre votre fork et le référentiel `octocat/Spoon-Knife`. Cliquez sur **Créer une requête d'extraction**.

GitHub vous amènera à une page où vous pourrez saisir un titre et une description de vos modifications. Il est important de fournir autant d'informations utiles que possible, ainsi que la raison pour laquelle vous effectuez cette demande de fusion. Le propriétaire du projet a besoin d’être en mesure de déterminer si votre modification s’avère aussi utile pour tout le monde que vous le pensez. Enfin, cliquez sur **Créer une pull request**.