Skip to main content

Cette version de GitHub Enterprise Server n'est plus disponible depuis le 2024-09-25. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités, effectuez une mise à niveau vers la dernière version de GitHub Enterprise. Pour obtenir de l’aide sur la mise à niveau, contactez le support GitHub Enterprise.

Extraction de demandes de tirage localement

Quand une personne vous envoie une demande de tirage (pull request) à partir d’une duplication (fork) ou d’une branche de votre dépôt, vous pouvez la fusionner localement pour résoudre un conflit de fusion ou pour tester et vérifier les modifications avant d’effectuer une fusion sur GitHub Enterprise Server.

Qui peut utiliser cette fonctionnalité ?

Anyone with write access to a repository can pull a remote pull request down locally.

Platform navigation

Tool navigation

Remarque : Les auteurs de demandes de tirage peuvent donner aux responsables de référentiel en amont, ou ceux disposant d’un accès push au référentiel en amont, l’autorisation d’effectuer des validations sur la branche de comparaison de leur demande de tirage dans une duplication appartenant à l’utilisateur. Pour plus d’informations, consultez « Autorisation de changements sur une branche de demande de tirage créée à partir d’une duplication ».

Modification d’une demande de tirage active localement

  1. Sous le nom du référentiel, cliquez sur Demandes de tirage.

    Capture d’écran de la page principale d’un dépôt. Dans la barre de navigation horizontale, un onglet intitulé « Demandes de tirage » est indiqué en orange foncé.

  2. Dans la liste des demandes de tirage, cliquez sur la demande de tirage que vous souhaitez modifier.

  3. Dans la zone de fusion, cliquez sur les instructions de ligne de commande. Suivez la séquence d’étapes pour afficher la demande de tirage proposée.

    Capture d’écran de la zone de fusion dans une demande de tirage. Le lien permettant d’accéder aux instructions de demande de tirage sur la ligne de commande est indiqué en orange foncé.

  4. Si vous le souhaitez, pour afficher les modifications proposées dans GitHub Desktop, à côté du bouton Fusionner la demande de tirage, cliquez sur Ouvrir dans GitHub Desktop .

    Capture d’écran de la section « Messages de fusion » dans une page de demande de tirage. Un lien intitulé « Ouvrir dans GitHub Desktop » est entouré en orange.

Pour plus d’informations sur GitHub CLI, consultez « À propos de GitHub CLI ».

Pour extraire une demande de tirage localement, utilisez la sous-commande gh pr checkout. Remplacez PULL-REQUEST par le nombre, l’URL ou la branche de tête de la demande de tirage.

gh pr checkout PULL-REQUEST

Modification d’une demande de tirage inactive localement

Si l’auteur d’une demande de tirage ne répond pas aux demandes ou a supprimé leur duplication, les modifications proposées dans cette demande de tirage peuvent toujours être fusionnées via une nouvelle demande de tirage. Toutefois, si vous souhaitez apporter des modifications à une demande de tirage et que l’auteur ne répond pas, vous devez effectuer certaines étapes supplémentaires pour mettre à jour la demande de tirage.

Une fois qu’une demande de tirage est ouverte, GitHub Enterprise Server stocke toutes les modifications à distance. En d’autres termes, les validations dans une demande de tirage sont disponibles dans un référentiel même avant la fusion de la demande de tirage. Vous pouvez extraire une demande de tirage ouverte et la recréer en tant que la vôtre.

N’importe qui peut utiliser une demande de tirage ouverte précédemment pour continuer à travailler dessus, la tester ou même ouvrir une nouvelle demande de tirage avec des modifications supplémentaires. Toutefois, seuls les collaborateurs disposant d’un accès push peuvent fusionner les demandes de tirage.

  1. Sous le nom de votre référentiel, cliquez sur Problèmes ou sur Demandes de tirage.

    Capture d’écran de la page principale d’un dépôt. Dans la barre de navigation horizontale, deux onglets, intitulés « Problèmes » et « Demandes de tirage », sont encadrés en orange foncé.

  2. Dans la liste « Demandes de tirage », cliquez sur la demande de tirage que vous souhaitez fusionner.

  3. Recherchez le numéro d’ID de la demande de tirage inactive. Il s’agit de la séquence de chiffres juste après le titre de la demande de tirage.

    Capture d’écran du titre d’une demande de tirage. Le numéro d’identification de la demande de tirage est indiqué en orange foncé.

  4. Ouvrez TerminalTerminalGit Bash.

  5. Récupérez la référence à la demande de tirage en fonction de son numéro d’ID, en créant une nouvelle branche au passage.

    git fetch origin pull/ID/head:BRANCH_NAME
    
  6. Basculez vers la nouvelle branche basée sur cette demande de tirage :

    [main] $ git switch BRANCH_NAME
    > Switched to a new branch 'BRANCH_NAME'
    
  7. À ce stade, vous pouvez faire tout ce que vous voulez avec cette branche. Vous pouvez exécuter des tests locaux ou fusionner d’autres branches dans la branche.

  8. Lorsque vous êtes prêt, vous pouvez envoyer la nouvelle branche :

    [pull-inactive-pull-request] $ git push origin BRANCH_NAME
    > Counting objects: 32, done.
    > Delta compression using up to 8 threads.
    > Compressing objects: 100% (26/26), done.
    > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done.
    > Total 29 (delta 8), reused 0 (delta 0)
    > To https://HOSTNAME/USERNAME/REPOSITORY.git
    >  * [new branch]      BRANCH_NAME -> BRANCH_NAME
    
  9. Créez une demande de tirage avec votre nouvelle branche.

Erreur : Échec de l’envoi de certaines références

L’espace de noms distant refs/pull/ est en lecture seule. Si vous essayez d’envoyer des validations là-bas, vous verrez cette erreur :

! [remote rejected] HEAD -> refs/pull/1/head (deny updating a hidden ref)
error: failed to push some refs to 'git@github.local:USERNAME/REPOSITORY.git'

Conseil : Lorsque vous supprimez ou renommez une référence distante, votre espace de noms refs/pull/origin/ local n’est pas affecté par les appels à git-remote.