Utilisez des demandes de tirage empilées pour interrompre les modifications de code volumineuses dans une chaîne de demandes de tirage plus petites et dépendantes que vous pouvez examiner et fusionner indépendamment.
Une pile est une série de demandes d’extraction dans le même référentiel où chaque demande de tirage cible la branche de la demande de tirage sous celle-ci, formant une chaîne ordonnée qui atterrit sur une branche unique, généralement votre branche principale. Au lieu d’une demande de tirage volumineuse, vous obtenez un ensemble de demandes de tirage plus petites. Étant donné que chaque demande de tirage a ses propres différences ciblées, les collègues peuvent examiner et approuver chaque couche indépendamment.
Prerequisites
- GitHub CLI (
gh) 2.90.0 ou version ultérieure, et Git 2.20 ou version ultérieure.- Authentifiez-vous GitHub CLI avec
gh auth login.
- Authentifiez-vous GitHub CLI avec
- Dépôt GitHub vers lequel vous pouvez push.
Installer l’extension CLI
gh extension install github/gh-stack
gh extension install github/gh-stack
Conseil
Pour utiliser des pull requests empilées avec des agents IA de codage, comme GitHub Copilot, installez le skill gh-stack.
gh skill install github/gh-stack
gh skill install github/gh-stack
Créer votre première stack
-
Pour initialiser une stack, accédez à votre référentiel et exécutez la commande suivante. Cela crée une entrée de suivi et votre première branche.
Shell gh stack init
gh stack initVous serez invité à donner un nom à votre première branche. Par défaut, la pile utilise la branche par défaut de votre référentiel (par exemple,
main) comme tronc principal, mais une pile peut cibler n’importe quelle branche. -
Travaillez sur votre première branche comme d’habitude : écrire du code, placer les modifications en zone de préparation et valider.
# ... write code ... git add . git commit -m "helpful-commit-message" -
Lorsque vous êtes prêt pour l’unité logique suivante de travail, ajoutez une nouvelle branche en haut de la pile.
Shell gh stack add BRANCH-NAME # ... write code ... git add . git commit -m "Another-helpful-commit-message"
gh stack add BRANCH-NAME # ... write code ... git add . git commit -m "Another-helpful-commit-message" -
Envoyez toutes les branches vers le dépôt distant.
Shell gh stack push
gh stack push -
Créez des pull requests et liez-les en tant que pile sur GitHub.
Shell gh stack submit
gh stack submitChaque pull request est créée avec la branche de base correcte. Votre première branche cible
main, et la branche suivanteBRANCH-NAMEcible la première branche. Les réviseurs verront uniquement les différences pour cette couche. Les pull requests sont automatiquement liées ensemble sous forme de pile sur GitHub, où vous pouvez voir leur ordre et naviguer rapidement entre elles. -
Affichez la pile et consultez l’état complet à tout moment.
Shell gh stack view
gh stack viewCette commande affiche toutes les branches, leurs liens de pull request, leurs états et le commit le plus récent sur chacune d’elles.
-
Utilisez
gh stack add -Am "MESSAGE"pour indexer toutes les modifications, valider et créer la branche suivante en une seule étape. Vous n’aurez pas besoin d’ungit addougit commitséparé. Si la branche actuelle n’a pas encore de commit, le commit y est ajouté ; si elle a déjà des commits, une nouvelle branche est créée.# Commit lands on the current branch gh stack add -Am "Auth middleware" # Current branch already has commits, so this creates the next branch gh stack add -Am "API routes" -
Lorsque vous êtes prêt, poussez tout et créez les pull requests.
Shell gh stack submit
gh stack submit