Passer au contenu
GitTree

Leçon 9 · Travail quotidien

Créez une branche de fonctionnalités et retirez uniquement la référence jetable

Ajoutez des cartes de flux de travail sur les cartes de fonctionnalités/tarifications tout en gardant le principal inchangé. Renommez une branche jetable et supprimez-la seulement après avoir prouvé que sa validation est déjà accessible depuis main.

Progression enregistrée dans ce navigateur.

La lecture charge la vidéo depuis YouTube (mode de confidentialité amélioré).

Narration en anglais · English and Arabic légendes

Ouvrez la page vidéoRegarder sur YouTube

Ce que vous apprendrez

  • Séparez la création d’un nom de branche de son extraction.
  • Validez la section de workflow sur une fonctionnalité sans déplacer main.
  • Renommez/supprimez une référence locale jetable sans inventer de fusion.
  • Distinguer les vérifications de suppression sécurisée natives de la suppression protégée de GitTree.

Avant de commencer

Vous commencez là où la leçon 8 s'est terminée : main contient les cinq validations documentées, une arborescence de travail et un index propres, CSS-02-WORKING validé et pas de télécommande. Gardez la distribution générée ignorée. La vidéo a été enregistrée avec Git 2.52.0 et GitTree 2.0 sur Ubuntu 24.04 : les branches ont été créées, renommées, supprimées et commutées dans l'application, le fichier y a été enregistré et validé, et les vérifications du terminal ont été exécutées par rapport à ce que l'application a créé, ou par rapport à des copies distinctes pour les états de création uniquement et renommé. Rien n'a été exécuté sur macOS ou Windows, et Ubuntu est le seul système Linux enregistré. Le minimum inspecté de GitTree est Git 2.39.0. Une fois connecté, la branche locale est sur le plan gratuit et ne nécessite aucun hôte ni Pro/essai.

Toutes les mutations de branche ci-dessous sont written steps for the isolated GitTree Features demo, jamais d'instructions pour créer une branche sur ce site Web. La branche source de l'auteur reste inchangée.

Concept

Une branche est un nom local mobile pour un commit, pas une copie de chaque fichier. Créer un nom seul ne fait pas bouger la TÊTE. La commutation attache HEAD à cette branche et met à jour les fichiers d'index/de travail si nécessaire. Une validation ultérieure avance uniquement la branche extraite. Sémantique de branche native, sémantique de changement.

Au départ, les noms principaux H5. Une branche jetable créée à H5 ajoute une deuxième étiquette au même cercle, pas un autre commit. Renommer change l'étiquette. La suppression de cette étiquette déjà accessible ne supprime pas l'historique principal. Les cartes de fonctionnalités/tarifications ultérieures commencent à H5 et passent à F1 ; les séjours principaux H5. Aucune télécommande n'est créée ou supprimée.

Le git branch -d natif vérifie la fusion (normalement par rapport au HEAD en amont/actuel). GitTree's inspected local deletion adapter uses -D after protecting the selected tip in its trash/journal. It is not the same refusal rule. Ne supposez jamais que l'application arrêtera une suppression non fusionnée simplement parce que native -d l'a fait. Dans ce cours, nous prouvons que l'embout jetable est un ancêtre du principal before either path, conservez la fonctionnalité et ne sélectionnez jamais d'action de suppression à distance.

Fichier de fonctionnalités complet

Seul index.html change sur la fonctionnalité. Remplacez-le par le HTML-03 complet ; le style/scripts/historique existant reste exactement tel que la leçon 8 les a laissés. Le nom de la branche thématique est littéral, mais la section ne contient aucun prix ni promotion.

Extrait de fichier · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work clearly.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
    <section aria-labelledby="plans-title">
      <h2 id="plans-title">Choose the workflow you need</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>Local Git</h3>
          <p>Local Git workflows work without signing in.</p>
        </article>
        <article class="feature-card">
          <h3>Connected workflows</h3>
          <p>Provider integrations and Nour require Pro or an applicable trial.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

Dans GitTree

  1. Confirmez que l'original est sur principal, propre, lors de la validation du document d'historique. Ouvrez Command Palette… (Commande/Ctrl+Maj+P) → Create Branch… (repo.branch.create). Attendez-vous à Create a branch at HEAD.
  2. Définissez Branch name = practice/rename-me. Uncheck Check out the new branch. Choisissez Create Branch. Attendez-vous à la nouvelle référence au même commit pendant que le principal reste extrait.
  3. Dans la liste des succursales locales, cliquez avec le bouton droit sur Practice/Rename-me → Rename practice/rename-me…. Dans Rename practice/rename-me, définissez le nom de la branche sur practice/renamed, puis sur Rename. Attendez-vous à ce que l'ancien nom soit absent, le nouveau nom au même bout ; aucun changement de fichier.
  4. Dans le terminal, prouvez la condition d'ancêtre ci-dessous. Ensuite, faites un clic droit sur Pratique/Renommé → Delete practice/renamed…. Vérifiez Delete practice/renamed in gittree-features?, assurez-vous que seule la référence locale est ciblée, puis Delete practice/renamed. Annulez si le nom/le conseil diffère. La source promet une entrée de journal ou de corbeille avant la mutation, pas une restauration à distance ; capturez l'opération/la preuve réelle avant d'appeler cela éprouvé à l'exécution.
  5. Palette Créer une branche… encore une fois, nommez feature/pricing-cards, laissez Check out the new branch coché, puis Créer une branche. Attendez-vous à ce que la fonctionnalité soit vérifiée au même H5. Cette case à cocher permet à l'opération de créer un commutateur and, contrairement à l'étape 2.
  6. Afficher les fichiers (Commande/Ctrl+Shift+E), focus index.html et Entrée. Remplacez son texte de travail par HTML-03 complet et Save (Commande/Ctrl+S). Ne mettez pas en scène la distribution générée.
  7. Retour à Graphique → palette Show Working Changes. Consultez index.html et utilisez Stage File. Résumé feat: add workflow cards ; options ordinaires désactivées ; Commit Changes to 1 File / Commande/Ctrl+Entrée une fois.
  8. Cliquez avec le bouton droit sur main dans la liste des succursales locales → Checkout main. Attendez-vous au héros de l’ère du document sans section de flux de travail et sans travail propre. Cliquez avec le bouton droit sur les cartes de fonctionnalités/tarifications → Checkout feature/pricing-cards pour revenir ; sa section réapparaît car l'arborescence validée de la branche diffère.
  9. Si une boîte de dialogue de commutateur sale apparaît, Cancel et inspectez votre travail réel. Les points de commutation canoniques sont propres ; ne choisissez pas une option de rejet correspondant au film.
  10. Terminez sur les cartes de fonctionnalités/tarifications. Confirmez que main a cinq commits et que la fonctionnalité a un commit supplémentaire. Faites not fusionnez-le encore ou supprimez-le pour obtenir un graphique unifilaire.

Les actions contextuelles sur les références nommées ne sont pas des commandes de palette génériques sans arguments. La palette de niveau supérieur Créer une branche… est une action distincte de HEAD actuelle. Utilisez les véritables étiquettes de menu ; les raccourcis directs par défaut pour créer/changer de branche ne sont pas inventés.

Dans la borne

Equivalent natif, à l'entrée principale propre ; ne répétez pas les mutations après le succès de l'application :

Command · bash
git branch practice/rename-me
git symbolic-ref --short HEAD
git branch -m practice/rename-me practice/renamed
git merge-base --is-ancestor practice/renamed main

Les vérifications de branche/renommage/ancêtre ont été sans succès ; impressions de référence symbolique :

Sortie
main

La sortie 0 de la requête ancêtre prouve que cet embout jetable est déjà accessible. Un résultat différent de zéro signifie arrêter ; ne remplacez pas la suppression forcée.

Command · bash
git branch --delete --quiet practice/renamed
git switch --quiet --create feature/pricing-cards

Tous deux réussirent en silence. Après avoir enregistré le HTML-03 complet :

Command · bash
git add -- index.html
git commit --quiet -m "feat: add workflow cards"
git switch --quiet main

Tous ont réussi silencieusement le montage. Cet interrupteur principal ne déplace pas la fonctionnalité réf.

Refus natif intentionnel, alors que main est extrait :

Command · bash
git -c advice.forceDeleteBranch=false branch -d feature/pricing-cards

Stderr observé, sortie 1 :

Sortie
error: the branch 'feature/pricing-cards' is not fully merged

La fonctionnalité demeure. Do not attempt this as an app safety test: sa politique de suppression protégée diffère. Ne remplacez pas -d par -D pour « corriger » la leçon.

Retourner et inspecter :

Command · bash
git switch --quiet feature/pricing-cards
git symbolic-ref --short HEAD
git branch --format='%(refname:short)'
git rev-list --count main..feature/pricing-cards
git log --format=%s main..feature/pricing-cards
git diff --name-only main feature/pricing-cards
git rev-list --count main
git status --short

Sorties observées après le commutateur silencieux, dans l'ordre :

Sortie
feature/pricing-cards
feature/pricing-cards
main
1
feat: add workflow cards
index.html
5

Le statut court final est vide avec la sortie 0. Les deux noms jetables sont absents. Aucune sortie distante n'existe car aucune n'a été configurée.

Résultat

À la fin de cette leçon : les cartes de fonctionnalités/tarifications ont été extraites et nettoyées, une fonctionnalité validée au-delà de la principale ; main reste au point de contrôle du document à cinq validations. Les cartes de workflow ne contiennent aucun prix. Branches jetables absentes. Aucune action de fusion, de branche distante, publiée ou de fournisseur.

Erreurs courantes

  • Compter les étiquettes de branche comme commits.
  • En supposant que la création uniquement ait déplacé HEAD.
  • Renommer la branche source-web active au lieu de la référence démo.
  • Croire que la suppression de l'application a la garde native de -d.
  • Suppression de la fonctionnalité utile pour simplifier le graphique.

Si quelque chose ne va pas

Les noms invalides/en double doivent garder la boîte de dialogue ouverte avec la valeur saisie. Lisez l'erreur ; ne résolvez pas l'ambiguïté liée à la casse en renommant les références non liées. Si des travaux bloquent un interrupteur, annulez-le et conservez-le ; les leçons ultérieures de cache/commit offrent des choix délibérés. Une branche extraite dans un autre arbre de travail ne peut pas être simplement supprimée.

Un refus natif non fusionné est protecteur. L'instantané de pré-mutation de l'application est un mécanisme différent, et non l'autorisation d'ignorer l'accessibilité ou l'identité du conseil. Une mutation échouée ne doit pas être présentée comme un succès simplement parce qu’une étiquette a temporairement disparu d’une vue filtrée.

Vérifiez votre compréhension

Répondez à chaque question, puis lisez pourquoi. Les questions marquées « Obligatoire » comptent pour terminer la leçon.

  1. Question 1 de 6

    Créer une autre référence à H5 crée combien d'histoire ?

    Choisissez une réponse.

  2. Question 2 de 6

    Avant de supprimer la référence jetable, que faut-il faire ?

    Choisissez chaque réponse qui s'applique.

  3. Question 3 de 6
    Obligatoire

    Validez HTML-03 sur les cartes de fonctionnalités/tarifications de H5. Où est le principal ?

    Choisissez une réponse.

  4. Question 4 de 6
    Obligatoire

    Décochez Vérifier la nouvelle branche lorsque vous êtes sur la page principale. Quels changements ?

    Choisissez une réponse.

  5. Question 5 de 6

    Native -d refuse la fonctionnalité non fusionnée. Cela prouve-t-il que GitTree refuse également ?

    Choisissez une réponse.

  6. Question 6 de 6
    Obligatoire

    Quelle preuve prouve que le point de contrôle est terminé ?

    Choisissez chaque réponse qui s'applique.

0 sur 6 corrects

Répondez correctement aux questions requises pour terminer la leçon.

Vérifié dans ce navigateur.

Pratique

Afficher le principal inchangé et la fonctionnalité validée à l'avance. Entrée modifiée : si l'extraction de la nouvelle branche est off, prédisez que HEAD reste principale jusqu'à un changement explicite. Testez dans une rediffusion jetable séparée, sans modifier le point de contrôle terminé. Expliquez pourquoi le refus natif ne prouve pas un refus d'application.

Votre propre confirmation : le site ne peut pas voir votre ordinateur.

Pour terminer la leçon, répondez correctement aux questions demandées et confirmez l'exercice pratique.

Récapitulatif

  • Les noms de branches et les commits sont des objets différents.
  • Les fonctions de création uniquement et de création et de commutation ont des effets HEAD différents.
  • Prouver la portée et l’accessibilité de la suppression ; la suppression d'application protégée et l'option -d native diffèrent.

Termes du glossaire introduits

Branche — فرع; commutateur — تبديل; réf — مرجع; accessible — قابل للوصول; en amont — فرع متتبَّع; arbre de travail — مجلد العمل.

Transcription vidéo

La narration de la vidéo, repère par repère.

Afficher la transcription
  1. Créer une branche de fonctionnalités tout en préservant le plat principal.
  2. Un nouveau nom de branche fait pas créer de commit.
  3. Créer le jetable nom sans quitter main.
  4. Confirmez que la création uniquement vous n'avez pas changé de succursale.
  5. Renommez la référence jetable, pas la branche source du site Web.
  6. Vérifiez l'embout jetable actuel est déjà accessible depuis main.
  7. Supprimer uniquement les éléments pré-cochés référence jetable.
  8. La suppression protégée de GitTree est pas de refus de suppression sécurisée natif.
  9. Cette fois, créez le fonctionnalité et vérifiez-la.
  10. Enregistrer la section workflow sans prix ni promotions.
  11. Revoir celle de la fonctionnalité fichier modifié avant de valider.
  12. Engagez-vous sur la fonctionnalité, pas sur la principale.
  13. Uniquement la branche extraite avance avec ce commit.
  14. La commutation sélectionne l’arborescence validée de main.
  15. La suppression native sécurisée refuse la fonctionnalité non fusionnée.
  16. Ce refus ne prouve pas GitTree refusera la même suppression.
  17. Revenir à la fonctionnalité contenu du fichier enregistré.
  18. Vérifiez une validation de fonctionnalité et seul le point d'index H T M L a changé.
  19. Main a encore cinq commits et la fonctionnalité est propre.
  20. Une fois le paiement désactivé, le nouveau nom existe mais HEAD reste sur main.
  21. Annuler un interrupteur sale inattendu et inspectez d'abord le travail.
  22. Un pourboire local protégé n'est pas un promesse de restauration à distance.
  23. Conservez la fonctionnalité utile et vérifiez les noms jetables ont disparu.
  24. La leçon suivante présente télécommandes; aucun n’était nécessaire ici.