Les étapes d'une demande de tirage
- Leçon 7
- 45 min
- Module 3 : Collaborer par la revue de code
Leçon 7 sur 15 · L'essentiel de Git et du développement en équipeLes étapes d'une demande de tirage
1. Comprendre un dépôt
2. Travailler avec les branches et les dépôts distants
3. Collaborer par la revue de code
4. Résoudre et récupérer
5. Mises en production et correctifs urgents
Ce que vous saurez faire
Intégrez une modification à main comme les équipes le font : sur sa propre branche, avec une vérification et une révision avant la fusion. Après cette leçon, vous pourrez faire passer une modification par toutes les étapes d’une demande de tirage.
Avant de commencerCe qu’il faut savoir et avoir sous la main
Ce que vous devez savoir
- Comment
git push,git fetchetgit pulldéplacent les commits (modifications enregistrées) entre votre clone et le dépôt distant, selon Synchroniser de façon réfléchie : votre copie du dépôt distant. - Comment Git réunit deux lignes de travail avec un commit de fusion, selon Synchroniser de façon réfléchie : les deux personnes créent un commit en même temps.
Ce qu’il vous faut sur votre ordinateur
- Un terminal dans votre dossier
~/projects. Sous Windows, utilisez Git Bash, selon Premiers pas dans le terminal : obtenir un terminal. - Git, configuré avec votre nom et votre adresse courriel, selon Configurer Git : Étape 2 : indiquer votre identité à Git. Les commits que vous faites dans le laboratoire affichent ce nom.
- Une connexion Internet, une seule fois, pour cloner les fichiers d’exercice dans Préparer le laboratoire d’exercice. Cette section crée le laboratoire et montre comment le recréer avec
--reset. - Vous n’avez pas besoin de compte sur un site Web. Cette leçon est une simulation locale : le dépôt distant est un dossier sur votre ordinateur, et vous jouez les deux personnes.
- Le script de préparation crée ses commits avec des noms et des dates fixes. Leurs empreintes sont donc les mêmes que dans cette leçon, par exemple
e058b3f. Les commits que vous faites vous-même ont des empreintes différentes. Utilisez celles de votre propre sortie.
Testé avec Git 2.54 sur macOS, Windows (Git Bash) et Linux. Git 2.40 ou une version ultérieure est nécessaire. Le script de préparation des laboratoires n’a pas encore été testé dans Git Bash sous Windows.
Préparer le laboratoire d’exercice
Section intitulée « Préparer le laboratoire d’exercice »À partir de ce module, vous vous exercez dans un laboratoire qu’un script crée pour vous. Le laboratoire a un état initial connu : les mêmes fichiers, branches et commits que dans les leçons. Si quelque chose ne fonctionne pas, vous pouvez le recréer en quelques secondes.
Votre dépôt ~/projects/ticket-notes des modules 1 et 2 ne change pas. Le laboratoire se trouve dans un nouveau dossier.
-
Allez dans votre dossier de projets :
Fenêtre de terminal cd ~/projects -
Obtenez les fichiers d’exercice. Faites cette étape une seule fois. Si vous avez déjà le dossier
nextia-learning-labs, exécutez plutôtgit -C nextia-learning-labs pullpour obtenir la version la plus récente.Fenêtre de terminal git clone https://github.com/Nextia-Intelligence/nextia-learning-labs.gitLa sortie commence par
Cloning into 'nextia-learning-labs'...(clonage dans « nextia-learning-labs »). -
Créez le laboratoire de ce module :
Fenêtre de terminal sh nextia-learning-labs/C14/setup.sh m03Sortie Ready: /Users/amira/projects/c14-labticket-notes your clonesam-notes Sam's cloneteam-remote.git the shared remoteNext: cd c14-lab/ticket-notesTo start this scenario again: sh nextia-learning-labs/C14/setup.sh m03 --reset -
Entrez dans votre clone et regardez l’historique :
Fenêtre de terminal cd c14-lab/ticket-notesgit log --oneline --graph --allSortie * 2e9e37c (HEAD -> main, origin/main, origin/HEAD) Add the on-call number| * 6c3828f (origin/add-faq, add-faq) Add a network question to the FAQ| * 6b53600 Add FAQ|/| * 5a15d07 (origin/add-ticket-104) Improve README wording| * e34484f Add ticket 104|/* e058b3f Add ticket 103* bae8898 Add a format check for ticket notes* eec3e5b Ignore secrets, exports and logs* 55b7943 Add contacts* 6a0bdd9 Add ticket 102* e01bd9f Add first ticket note* ec0aceb Add READMESi vos empreintes sont les mêmes, le laboratoire est prêt.
Le dossier c14-lab contient trois dépôts :
| Dossier | Ce qu’il contient |
|---|---|
team-remote.git |
Le dépôt distant partagé : un dépôt nu, comme dans le module 2. |
ticket-notes |
Votre clone. Vous travaillez ici dans le rôle d’Amira. Vos propres commits affichent le nom de vos paramètres globaux (module 1). |
sam-notes |
Le clone de votre coéquipier, Sam Okafor. Son identité est déjà configurée comme celle de Sam. Les commits que vous y faites affichent donc son nom. |
Les autres branches, add-ticket-104 et add-faq, servent aux deux prochaines leçons.
Pour recommencer à tout moment, allez dans ~/projects et ajoutez --reset à la commande de préparation. Elle supprime seulement le dossier c14-lab, puis le recrée :
sh nextia-learning-labs/C14/setup.sh m03 --resetSans --reset, le script ne supprime rien. Il s’arrête avec The folder c14-lab already exists (le dossier c14-lab existe déjà).
Ce qu’est une demande de tirage
Section intitulée « Ce qu’est une demande de tirage »Dans une équipe, personne ne fait de commit directement sur main. Chaque modification va d’abord sur sa propre branche. Ensuite, son auteur demande à l’équipe de la fusionner. Cette demande est une demande de tirage (pull request, PR) : une demande de fusion d’une branche source dans une branche cible après révision. GitLab appelle la même chose une demande de fusion (merge request).
Chaque PR a deux branches. Vous devez toujours savoir laquelle est laquelle :
- La branche source contient les nouveaux commits. Dans cette leçon, c’est
add-ticket-template. - La branche cible reçoit les commits. Habituellement, c’est
main.
Cette leçon écrit la paire sous la forme add-ticket-template → main.
Avant la fusion, deux choses se passent :
- Une vérification est une commande qui teste automatiquement la modification, par exemple une vérification du format ou les tests d’un programme. Sur un service hébergé comme GitHub, un service d’intégration continue (CI) exécute les vérifications chaque fois que vous poussez vers la branche.
- Une révision a lieu quand un coéquipier lit la modification et prend une décision. La personne qui révise l’approuve ou demande des modifications : elle demande à l’auteur de corriger quelque chose d’abord.
À la fin, quelqu’un fusionne la PR. Vous avez vu la fusion dans le module 2 : Git réunit deux lignes d’historique avec un nouveau commit. Ce commit a les deux comme parents.
La simulation dans cette leçon
Section intitulée « La simulation dans cette leçon »Un service hébergé affiche la PR sur une page Web. Vous n’en avez pas besoin pour apprendre les étapes. Cette leçon réalise chaque étape avec des commandes Git et des fichiers texte :
| Étape | Dans cette leçon (simulation) | Sur GitHub (facultatif, non requis) |
|---|---|---|
| Créer une branche et faire un commit | git switch -c, git commit |
La même chose. |
| Pousser la branche | git push -u origin add-ticket-template |
La même chose. GitHub affiche ensuite un bouton Compare & pull request (comparer et créer une demande de tirage). |
| Ouvrir la PR | Écrivez la description de la PR dans un fichier texte à côté du dépôt. | Sélectionnez Compare & pull request. Réglez base (branche cible) sur main et compare (branche source) sur add-ticket-template. Écrivez la description, puis sélectionnez Create pull request (créer une demande de tirage). |
| Exécuter les vérifications | Exécutez vous-même sh check.sh. |
Le service CI exécute les vérifications. Vous voyez le résultat dans l’onglet Checks (vérifications). |
| Réviser | Dans sam-notes, récupérez les modifications, puis lisez git log et git diff. Écrivez la révision dans le fichier de la PR. |
La personne qui révise lit l’onglet Files changed (fichiers modifiés), puis sélectionne Review changes (réviser les modifications), puis Request changes (demander des modifications) ou Approve (approuver). |
| Répondre à la révision | Faites un nouveau commit sur la même branche et poussez-le. | La même chose. La PR affiche le nouveau commit. |
| Fusionner | Passez à main, fusionnez avec --no-ff et poussez. |
Sélectionnez Merge pull request (fusionner la demande de tirage), puis Confirm merge (confirmer la fusion). |
| Supprimer la branche | git branch -d et git push origin --delete |
Sélectionnez Delete branch (supprimer la branche). Exécutez ensuite git branch -d sur votre ordinateur. |
Exemple détaillé : un modèle pour les lignes de billets
Section intitulée « Exemple détaillé : un modèle pour les lignes de billets »Le dépôt ticket-notes a une vérification, check.sh. Elle échoue quand une ligne de tickets.txt ne commence pas par Ticket <number>: (Billet, suivi du numéro et de deux-points). Les nouvelles personnes au service d’assistance ne connaissent pas ce format. Amira veut ajouter un modèle qui le montre.
1. Créer la branche
Section intitulée « 1. Créer la branche »Branche actuelle : main. Amira s’assure que main est à jour, car la nouvelle branche part de celle-ci :
git pullAlready up to date.Elle crée la branche source :
git switch -c add-ticket-templateSwitched to a new branch 'add-ticket-template'2. Faire un commit
Section intitulée « 2. Faire un commit »Branche actuelle : add-ticket-template. Elle crée template.txt avec une ligne :
Ticket <number>: <the problem>. <what you did>.Elle le place dans la zone de préparation et fait un commit (enregistrement des changements) :
git add template.txtgit commit -m "Add a template for ticket lines"[add-ticket-template d08926d] Add a template for ticket lines 1 file changed, 1 insertion(+) create mode 100644 template.txt3. Vérifier avant de pousser
Section intitulée « 3. Vérifier avant de pousser »Avant de demander une révision, Amira vérifie deux choses. D’abord, la branche contient seulement son changement. main..add-ticket-template signifie « les commits sur add-ticket-template qui ne sont pas sur main » :
git log --oneline main..add-ticket-templated08926d Add a template for ticket linesUn seul commit, et c’est le sien. Ensuite, la vérification réussit :
sh check.shPASS: 3 ticket lines checkedsh check.sh exécute le script dans le fichier check.sh. Sur GitHub, l’intégration continue (CI) exécute cette même commande à chaque envoi. Ici, vous l’exécutez vous-même.
4. Pousser la branche
Section intitulée « 4. Pousser la branche »git push -u origin add-ticket-templateTo /Users/amira/projects/c14-lab/team-remote.git * [new branch] add-ticket-template -> add-ticket-templatebranch 'add-ticket-template' set up to track 'origin/add-ticket-template'.5. Ouvrir la demande de tirage (simulation)
Section intitulée « 5. Ouvrir la demande de tirage (simulation) »Demande de tirage (PR) : add-ticket-template → main. Une bonne description de PR répond à trois questions pour la personne qui révise : quel est le problème, qu’avez-vous changé et comment l’avez-vous vérifié? Amira l’écrit dans un nouveau fichier, ~/projects/c14-lab/pr-add-ticket-template.md. Le fichier se trouve à côté du dépôt, pas dedans. Il ne fait donc pas partie d’un commit.
# Add a template for ticket lines
Source: add-ticket-template. Target: main.
## ProblemNew help desk staff write ticket lines in different formats.Then check.sh fails, and they do not know why.
## ChangeAdd template.txt. It shows the format that check.sh expects.
## How I checked- `git log --oneline main..add-ticket-template` shows only my commit.- `sh check.sh` on the branch: PASS: 3 ticket lines checked.6. Réviser (simulation : vous jouez Sam)
Section intitulée « 6. Réviser (simulation : vous jouez Sam) »Sam révise dans son propre clone. Il récupère les changements pour que sa copie des informations du dépôt distant contienne la nouvelle branche :
cd ../sam-notesgit fetchFrom /Users/amira/projects/c14-lab/team-remote * [new branch] add-ticket-template -> origin/add-ticket-templateIl lit les commits et le changement. Le diff (comparaison des changements) utilise trois points : main...origin/add-ticket-template montre seulement les changements faits par la branche. La prochaine leçon explique pourquoi les trois points comptent.
git log --oneline main..origin/add-ticket-templategit diff main...origin/add-ticket-templated08926d Add a template for ticket linesdiff --git a/template.txt b/template.txtnew file mode 100644index 0000000..9333f70--- /dev/null+++ b/template.txt@@ -0,0 +1 @@Ticket <number>: <the problem>. <what you did>.Le changement est correct, mais les espaces réservés seuls sont difficiles à comprendre. Sam demande des changements. Il ajoute sa révision à la fin du fichier de la PR :
## Review (Sam): request changes- Blocking: please add one real example line under the template. New staff learn the format faster from an example.7. Répondre à la révision
Section intitulée « 7. Répondre à la révision »Branche actuelle : add-ticket-template dans le clone d’Amira. Elle n’ouvre pas une nouvelle PR. Elle ajoute un commit à la même branche :
Ticket <number>: <the problem>. <what you did>.Example: Ticket 101: printer offline. Restarted the spooler.cd ../ticket-notesgit commit -am "Add an example to the ticket template"sh check.shgit push[add-ticket-template 48f03a7] Add an example to the ticket template 1 file changed, 1 insertion(+)PASS: 3 ticket lines checkedTo /Users/amira/projects/c14-lab/team-remote.git d08926d..48f03a7 add-ticket-template -> add-ticket-templateUne PR suit sa branche source, pas un commit fixe. L’envoi met donc la PR à jour. Sur GitHub, le nouveau commit apparaît dans la même PR, et les vérifications s’exécutent de nouveau.
Sam récupère les changements et les relit. La branche a maintenant deux commits :
git fetchgit log --oneline main..origin/add-ticket-templateFrom /Users/amira/projects/c14-lab/team-remote d08926d..48f03a7 add-ticket-template -> origin/add-ticket-template48f03a7 Add an example to the ticket templated08926d Add a template for ticket linesIl lit le nouveau commit avec git show 48f03a7, puis l’approuve. Il ajoute une ligne au fichier de la PR : ## Review (Sam): approved (Révision (Sam) : approuvée).
8. Fusionner
Section intitulée « 8. Fusionner »Branche actuelle : main dans le clone d’Amira. PR : add-ticket-template → main. Elle passe à la branche cible et la met à jour. Un collègue peut avoir poussé des changements vers main pendant la révision :
git switch maingit pullSwitched to branch 'main'Your branch is up to date with 'origin/main'.Already up to date.Elle fusionne la branche source dans main :
git merge --no-ff --no-edit add-ticket-templateMerge made by the 'ort' strategy. template.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 template.txt--no-ffsignifie « sans avance rapide ». Ici,mainn’a pas bougé depuis la création de la branche. Git pourrait donc simplement avancer l’étiquettemain.--no-ffcrée quand même un commit de fusion. Ce commit indique que la PR a été fusionnée à ce moment-là. L’option Create a merge commit (créer un commit de fusion) de GitHub fait la même chose. La troisième leçon de ce module la compare aux autres options.--no-editconserve le message proposé par Git, donc aucun éditeur ne s’ouvre.
Le résultat de la fusion est nouveau : il combine la branche avec la version la plus récente de main. Elle relance donc la vérification, puis regarde l’historique :
sh check.shgit log --oneline --graph -5PASS: 3 ticket lines checked* dbdc0c1 (HEAD -> main) Merge branch 'add-ticket-template'|\| * 48f03a7 (origin/add-ticket-template, add-ticket-template) Add an example to the ticket template| * d08926d Add a template for ticket lines|/* 2e9e37c (origin/main, origin/HEAD) Add the on-call number* e058b3f Add ticket 103Le commit de fusion dbdc0c1 a deux parents : 2e9e37c de main et 48f03a7 de la branche. Elle pousse main :
git pushTo /Users/amira/projects/c14-lab/team-remote.git 2e9e37c..dbdc0c1 main -> main9. Supprimer la branche
Section intitulée « 9. Supprimer la branche »Le travail est maintenant dans main, donc l’étiquette de branche n’est plus nécessaire. Elle la supprime sur son ordinateur, puis sur le dépôt distant :
git branch -d add-ticket-templategit push origin --delete add-ticket-templateDeleted branch add-ticket-template (was 48f03a7).To /Users/amira/projects/c14-lab/team-remote.git - [deleted] add-ticket-template-d supprime une branche seulement quand ses commits sont fusionnés. Les commits ne sont pas supprimés : ils font partie de main.
Exercice guidé : votre première demande de tirage
Section intitulée « Exercice guidé : votre première demande de tirage »Faites l’exemple détaillé dans votre laboratoire. Vous jouez Amira dans ticket-notes et Sam dans sam-notes. À chaque étape, dites la branche actuelle et la PR (add-ticket-template → main) à voix haute ou dans une note.
-
Dans
~/projects/c14-lab/ticket-notes, exécutezgit status. La sortie doit afficherOn branch main(sur la branche main) etworking tree clean(répertoire de travail sans changements). -
Exécutez
git pull. La sortie estAlready up to date.(déjà à jour). -
Créez la branche source :
Fenêtre de terminal git switch -c add-ticket-template -
Dans votre éditeur, créez
template.txtavec la ligne de modèle de l’exemple détaillé. Enregistrez-le. -
Placez le fichier dans la zone de préparation et faites un commit :
Fenêtre de terminal git add template.txtgit commit -m "Add a template for ticket lines" -
Exécutez
git log --oneline main..add-ticket-template. La sortie montre un seul commit : le vôtre. -
Exécutez
sh check.sh. La sortie estPASS: 3 ticket lines checked(réussite : 3 lignes de billets vérifiées). -
Poussez la branche :
Fenêtre de terminal git push -u origin add-ticket-templateLa sortie contient
* [new branch](nouvelle branche). -
Dans votre éditeur, créez
~/projects/c14-lab/pr-add-ticket-template.md. Écrivez la source, la cible et les trois sections : problème, changement et méthode de vérification. -
Simulation : révisez comme Sam. Allez dans le clone de Sam et récupérez les changements :
Fenêtre de terminal cd ../sam-notesgit fetchLa sortie contient
[new branch] add-ticket-template -> origin/add-ticket-template(nouvelle branche). -
Lisez le changement :
Fenêtre de terminal git log --oneline main..origin/add-ticket-templategit diff main...origin/add-ticket-templateLe diff montre un nouveau fichier,
template.txt. -
Ajoutez la révision de Sam à la fin du fichier de la PR : demandez des changements et une ligne d’exemple.
-
Retournez dans votre clone. Assurez-vous d’être sur la branche source :
Fenêtre de terminal cd ../ticket-notesgit statusLa sortie commence par
On branch add-ticket-template(sur la branche add-ticket-template). -
Ajoutez la ligne d’exemple à
template.txt. Enregistrez-le. Puis faites un commit, vérifiez et poussez :Fenêtre de terminal git commit -am "Add an example to the ticket template"sh check.shgit push -
Exécutez
cd ../sam-notes, puisgit fetch, puisgit log --oneline main..origin/add-ticket-template. La sortie montre deux commits. Ajoutez## Review (Sam): approvedau fichier de la PR. -
Dans
ticket-notes, passez à la branche cible et mettez-la à jour :Fenêtre de terminal git switch maingit pull -
Fusionnez la branche source :
Fenêtre de terminal git merge --no-ff --no-edit add-ticket-templateLa sortie commence par
Merge made by the 'ort' strategy.(fusion effectuée avec la stratégie « ort »). -
Exécutez
sh check.sh. La sortie estPASS: 3 ticket lines checked. -
Exécutez
git log --oneline --graph -5. Le commit le plus récent estMerge branch 'add-ticket-template'(fusionner la branche « add-ticket-template »). Deux lignes se trouvent en dessous. -
Poussez
main:Fenêtre de terminal git push -
Supprimez la branche sur votre ordinateur et sur le dépôt distant :
Fenêtre de terminal git branch -d add-ticket-templategit push origin --delete add-ticket-template -
Exécutez
git branch -a.add-ticket-templateetremotes/origin/add-ticket-templatene sont pas dans la liste.
À vous de jouer : préparer votre propre demande de tirage
Section intitulée « À vous de jouer : préparer votre propre demande de tirage »Préparez une demande de tirage simulée pour une nouvelle modification. Choisissez un nom de branche, par exemple add-ticket-105. La modification peut être une nouvelle ligne dans tickets.txt, ou un nouveau contact dans contacts.txt.
- Partez d’une branche
mainà jour et créez la branche source. - Faites un commit (enregistrement des modifications). Vérifiez que la branche contient seulement votre commit et que
sh check.shréussit. - Poussez la branche.
- Rédigez
~/projects/c14-lab/pr-<your branch>.mdavec la source, la cible et les sections Problem (problème), Change (modification) et How I checked (mes vérifications). Dans How I checked, écrivez les commandes exécutées et leurs résultats.
Ne faites pas encore la fusion. Une personne qui révise doit pouvoir comprendre et vérifier la demande avec seulement le fichier et la branche.
Afficher une réponse modèle
git switch maingit pullgit switch -c add-ticket-105Ajoutez une ligne à la fin de tickets.txt, puis enregistrez le fichier :
Ticket 105: new starter has no email account. Created the account.git commit -am "Add ticket 105"git log --oneline main..add-ticket-105sh check.shgit push -u origin add-ticket-10511525d0 Add ticket 105PASS: 4 ticket lines checkedTo /Users/amira/projects/c14-lab/team-remote.git * [new branch] add-ticket-105 -> add-ticket-105branch 'add-ticket-105' set up to track 'origin/add-ticket-105'.# Add ticket 105
Source: add-ticket-105. Target: main.
## ProblemTicket 105 (a new starter with no email account) is closed,but it is not in the ticket notes.
## ChangeAdd one line for ticket 105 to tickets.txt.
## How I checked- `git log --oneline main..add-ticket-105` shows one commit, "Add ticket 105".- `git diff --stat main...add-ticket-105` shows only tickets.txt, 1 line added.- `sh check.sh` on the branch: PASS: 4 ticket lines checked.Un bon énoncé du problème explique ce qui ne va pas sans la modification. De bonnes notes de validation donnent les commandes et les résultats exacts pour permettre à la personne qui révise de les reproduire. « J’ai testé » ne suffit pas.
Erreur courante
J'ai fait un commit sur main, pas sur une branche
Symptôme : vous avez oublié git switch -c et fait un commit sur main. git status affiche :
On branch mainYour branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits)
nothing to commit, working tree cleanNe suivez pas le conseil de pousser. Cette opération envoie le commit directement sur la branche main de l’équipe, sans vérification ni révision.
Cause : le commit a été ajouté à la branche vers laquelle HEAD pointait, soit main.
Solution : placez une nouvelle étiquette de branche sur votre commit, puis ramenez main à la position du dépôt distant.
-
Créez la branche source depuis votre position actuelle. Elle contient votre commit :
Fenêtre de terminal git switch -c add-ticket-template -
Ramenez l’étiquette
mainàorigin/main. Vous n’êtes plus surmain, donc cette opération est permise :Fenêtre de terminal git branch -f main origin/mainSortie branch 'main' set up to track 'origin/main'. -
Vérifiez le résultat avec
git log --oneline -3:Sortie d08926d (HEAD -> add-ticket-template) Add a template for ticket lines2e9e37c (origin/main, origin/HEAD, main) Add the on-call numbere058b3f Add ticket 103
Votre commit se trouve sur add-ticket-template, et main correspond de nouveau à origin/main. Continuez avec la poussée et la demande de tirage. Utilisez cette solution seulement pour un commit que vous n’avez pas poussé.
Erreur courante
La demande de tirage affiche des commits qui ne sont pas les miens
Symptôme : la personne qui révise voit plus de commits et de fichiers que vous n’en avez modifiés :
git log --oneline main..origin/add-ticket-templategit diff --stat main...origin/add-ticket-template43b832b Add a template for ticket lines6c3828f Add a network question to the FAQ6b53600 Add FAQ faq.txt | 5 +++++ template.txt | 1 + 2 files changed, 6 insertions(+)Cause : vous avez créé la branche depuis add-faq, et non depuis main. git switch -c crée la nouvelle branche à partir de votre branche actuelle. La nouvelle branche contient donc aussi les commits de la FAQ. Si vous la fusionnez, ils entrent dans main sans révision distincte.
Solution : créez une branche correcte depuis main, puis copiez seulement votre fichier dans cette branche. git show add-ticket-template:template.txt affiche le fichier tel qu’il est sur la mauvaise branche. > l’écrit dans le dossier.
git switch maingit switch -c add-templategit show add-ticket-template:template.txt > template.txtgit add template.txt, puisgit commit -m "Add a template for ticket lines"- Exécutez
git log --oneline main..add-template. La commande affiche seulement votre commit. - Poussez la nouvelle branche avec
git push -u origin add-template, puis utilisez-la pour la demande de tirage. - Supprimez la mauvaise branche du dépôt distant et de votre ordinateur :
git push origin --delete add-ticket-template, puisgit branch -D add-ticket-template.
-D supprime une branche même si ses commits ne sont pas fusionnés. Utilisez cette option seulement après avoir copié votre travail. Pour éviter cette erreur, exécutez git status avant git switch -c. Assurez-vous que la commande affiche On branch main (sur la branche main).
Vérifiez votre compréhension
Prédisez : Sam demande des modifications pour add-ticket-template → main. Amira ajoute un commit à add-ticket-template et le pousse. Doit-elle ouvrir une nouvelle demande de tirage? Que voit Sam quand il récupère les modifications?
Afficher la réponse
Pas de nouvelle demande de tirage. Une demande suit sa branche source, pas un commit fixe. Après la poussée, la même demande contient les deux commits. Quand Sam récupère les modifications, origin/add-ticket-template avance et git log --oneline main..origin/add-ticket-template affiche deux commits. Sur GitHub, les vérifications s’exécutent aussi de nouveau pour le nouveau commit.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Vérification pratique : avant de demander une révision, montrez que votre branche contient seulement vos commits, quels fichiers elle modifie et que la vérification réussit.
Afficher la réponse
Sur votre branche source, exécutez :
git log --oneline main..HEAD: la liste contient seulement vos commits.git diff --stat main...HEAD: la liste contient seulement les fichiers que vous vouliez modifier.sh check.sh: la sortie commence parPASS(réussite).
Écrivez ces commandes et leurs résultats dans la section How I checked de la description de votre demande de tirage.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Récapitulatif
- Une demande de tirage demande de fusionner une branche source dans une branche cible après une vérification et une révision. Sachez toujours quelles sont les deux branches.
- La séquence est : branche, commit, vérification, poussée, ouverture de la demande, révision, réponse, fusion, suppression de la branche.
- Pour répondre à une révision, poussez un nouveau commit vers la même branche. La demande de tirage se met à jour automatiquement.
git merge --no-ffcrée toujours un commit de fusion, qui indique où la demande de tirage a été fusionnée.- Relancez la vérification après la fusion, car le résultat de la fusion est nouveau.
- Dans ce laboratoire,
sh nextia-learning-labs/C14/setup.sh m03 --reset, exécuté depuis~/projects, vous permet de repartir à zéro.
Leçon suivante : Lire et réviser les différences