Remarque
Cette fonctionnalité est disponible en préversion publique et peut être modifiée.
Cet article traite des problèmes courants que vous pouvez rencontrer lors de l’utilisation des demandes de tirage empilées et comment les résoudre.
Une rebase signale un conflit
Lorsqu’une rebase en cascade rencontre un conflit, gh stack rebase arrête et répertorie les fichiers en conflit.
Pour résoudre le conflit et continuer :
-
Ouvrez chaque fichier en conflit et résolvez les marqueurs de conflit (
<<<<<<<,=======,>>>>>>>). -
Étape des fichiers résolus.
git add . -
Poursuivez la rebase. Les branches restantes sont rebasées automatiquement.
gh stack rebase --continue
Si le conflit est trop complexe ou que vous souhaitez recommencer, abandonnez la rebase pour restaurer toutes les branches à leur état de pré-rebase.
gh stack rebase --abort
Une synchronisation s’est arrêtée en raison d’un conflit
Si un conflit est détecté lors de l’exécution gh stack sync, toutes les branches sont restaurées à leur état d’origine afin que rien ne soit partiellement mis à jour. Résolvez le conflit de manière interactive en exécutant une nouvelle base directement, puis envoyez (push) les branches mises à jour.
gh stack rebase
gh stack push
Une session de modification ne démarre pas
gh stack modify nécessite un état de démarrage propre. S’il ne démarre pas, vérifiez que :
- Vous disposez d’une pile active extraite.
- Votre arbre de travail est propre.
- Aucune nouvelle base n’est en cours.
- Aucune demande de tirage n’est mise en file d’attente pour fusionner.
- L’historique des validations est linéaire. Si ce n’est pas le cas, exécutez
gh stack rebased’abord.
Une session de modification a été interrompue
Si gh stack modify elle est interrompue, par exemple, par un conflit que vous ne souhaitez pas résoudre ou un incident de terminal, vous pouvez restaurer la pile à l’état dans lequel elle était avant de commencer. Un instantané de pré-modification est mis en cache localement pour la récupération.
gh stack modify --abort
Si un conflit s’est produit lors de l’application des modifications et que vous souhaitez continuer à passer à la place, résolvez le conflit, mettant en scène les fichiers avec git add, puis exécutez gh stack modify --continue.
Impossible de fusionner une demande de tirage
Une demande de tirage dans une pile ne peut fusionner que lorsqu’elle, et chaque demande de tirage en dessous, répond à toutes les exigences de fusion et la pile a un historique entièrement linéaire. Si la fusion est bloquée, vérifiez que :
- La demande de tirage et toutes les demandes de tirage ci-dessous ont besoin de révisions et de passage de vérifications.
- La pile a un historique linéaire. Si les modifications ont été poussées vers une branche inférieure ou le tronc déplacé vers l’avant, l’historique peut ne plus être linéaire.
Pour restaurer un historique linéaire, exécutez gh stack rebase , puis gh stack push, ou cliquez sur Rebase stack dans la zone de fusion. Pour les instructions, consultez Gestion des demandes de tirage empilées.
La fusion s’est arrêtée à travers la pile
Les vérifications de pré-fusion s’exécutent avant toute fusion, mais une fusion peut toujours échouer. Par exemple, en raison d’un conflit inattendu ou d’une défaillance intermittente. Si une défaillance se produit d’une manière ou d’une autre, la fusion s’arrête à cette demande de tirage.
- Les demandes de tirage inférieures à celle-ci qui ont été fusionnées restent correctement atterries sur la branche de base.
- La demande de tirage ayant échoué et les demandes de tirage au-dessus de celle-ci restent ouvertes.
Résolvez le problème sur la demande de tirage ayant échoué, puis réessayez la fusion pour atterrir le reste de la pile.
Une demande de tirage a été supprimée de la file d’attente de fusion
Les piles sont conservées ensemble dans la file d’attente de fusion. Si une demande de tirage est supprimée ou éjectée de la file d’attente, toutes les demandes de tirage au-dessus de la pile sont également éjectées et supprimées. Rajoutez la pile à la file d’attente une fois le problème sous-jacent résolu.
Une pile volumineuse peut également être divisée entre les groupes de fusion consécutifs : la file d’attente de fusion permet à un groupe de fusion de dépasser sa taille maximale configurée de jusqu’à 50 % pour conserver une pile ensemble, et toutes les demandes de tirage qui ne correspondent pas aux groupes suivants tant que la pile complète n’a pas atterri.
Vous avez fermé une demande de tirage au milieu de la pile
La fermeture d’une demande de tirage au milieu d’une pile bloque toutes les demandes de tirage au-dessus de celle-ci d’être fusionnées. La relation de pile est conservée. Par conséquent, pour ouvrir une autre demande de tirage ou modifier la structure de la pile, vous devez d’abord dissous la pile, puis la recréer.
Vous pouvez décompresser à partir du GitHub site web, ou restructurer la pile avec gh stack modify. Le déstacking supprime uniquement les demandes de tirage ouvertes, brouillons et fermées ; Les demandes de tirage fusionnées et mises en file d’attente restent dans la pile. Consultez Gestion des demandes de tirage empilées et Gestion des demandes de tirage empilées.
Les validations ne sont pas signées après une nouvelle base
Une rebase déclenchée à partir de la demande de tirage s’exécute sur GitHubles serveurs des serveurs, et ces validations ne sont pas signées. Si votre référentiel nécessite des validations signées, rebasez à partir de GitHub CLI la place.
- L’exécution
gh stack rebaseutilise vos opérations Git locales, de sorte que les validations générées suivent votre configuration de signature de validation Git locale. - Après la rebasing, envoyez (push) les branches mises à jour avec
gh stack push.
Vous ne pouvez pas créer de pile sur plusieurs fourches
Les demandes de tirage empilées nécessitent que toutes les branches se soient dans le même référentiel. Les piles inter-fourche ne sont pas prises en charge.