Lektion 9 · Alltagsarbeit
Erstellen Sie einen Feature-Zweig und entfernen Sie nur die verfügbare Referenz
Fügen Sie Workflow-Karten zu Feature-/Preiskarten hinzu, während die Hauptkarte unverändert bleibt. Benennen Sie einen Wegwerfzweig um und löschen Sie ihn erst, nachdem nachgewiesen wurde, dass sein Commit bereits vom Hauptzweig aus erreichbar ist.
- Ebene: Anfänger
- 9 Min. gelesen
- 3 Min. Video
- Aktualisiert
- Vor dieser Lektion: Lesen Sie den Verlauf, ohne den KOPF zu bewegen
In diesem Browser gespeicherter Fortschritt.
Beim Abspielen wird das Video von YouTube geladen (erweiterter Datenschutzmodus).
Englische Erzählung · English and Arabic Bildunterschriften
Öffnen Sie die VideoseiteAuf YouTube ansehenWas Sie lernen werden
- Trennen Sie das Erstellen eines Filialnamens vom Auschecken.
- Übernehmen Sie den Workflow-Abschnitt für ein Feature, ohne den Hauptabschnitt zu verschieben.
- Benennen Sie eine verfügbare lokale Referenz um/löschen Sie sie, ohne eine Zusammenführung zu erfinden.
- Unterscheiden Sie zwischen nativen Safe-Delete-Prüfungen und der geschützten Löschung von GitTree.
Bevor Sie beginnen
Sie beginnen dort, wo Lektion 8 aufgehört hat: main verfügt über die fünf dokumentierten Commits, einen sauberen Arbeitsbaum und Index, CSS-02-WORKING-Commit und kein Remote. Lassen Sie den generierten Dist ignoriert. Das Video wurde mit Git 2.52.0 und GitTree 2.0 am Ubuntu 24.04 aufgezeichnet: Die Zweige wurden in der App erstellt, umbenannt, gelöscht und vertauscht, die Datei wurde dort gespeichert und festgeschrieben, und die Terminalprüfungen wurden anhand der von der App erstellten Elemente oder anhand separater Kopien für die Zustände „Nur erstellen“ und „Umbenennen“ durchgeführt. Auf macOS oder Windows wurde nichts ausgeführt, und Ubuntu ist das einzige aufgezeichnete Linux-System. Das überprüfte Minimum von GitTree beträgt Git 2.39.0. Sobald Sie angemeldet sind, ist die lokale Verzweigung im kostenlosen Plan enthalten und erfordert keinen Host oder Pro/Testversion.
Alle unten aufgeführten Verzweigungsmutationen sind written steps for the isolated GitTree Features demo, niemals Anweisungen zum Verzweigen dieser Website beim Auschecken. Der Quellzweig des Autors bleibt unverändert.
Konzept
Ein Branch ist ein verschiebbarer lokaler Name für einen Commit, nicht eine Kopie jeder Datei. Das alleinige Erstellen eines Namens bewegt HEAD nicht. Durch den Wechsel wird HEAD an diesen Zweig angehängt und Index-/Arbeitsdateien nach Bedarf aktualisiert. Ein nachfolgender Commit verschiebt nur den ausgecheckten Zweig. Semantik des nativen Zweigs, Semantik wechseln.
Zu Beginn Hauptnamen H5. Ein bei H5 erstellter Einwegzweig fügt dem gleichen Kreis ein zweites Label hinzu, kein weiteres Commit. Durch das Umbenennen ändert sich die Bezeichnung. Durch das Entfernen dieses bereits erreichbaren Labels wird der Verlauf von main nicht entfernt. Spätere Feature-/Preiskarten beginnen bei H5 und reichen bis F1; Hauptstreben H5. Es wird keine Fernbedienung erstellt oder gelöscht.
Native git branch -d prüft die Zusammenführung (normalerweise relativ zum Upstream/aktuellen HEAD). GitTree's inspected local deletion adapter uses -D after protecting the selected tip in its trash/journal. It is not the same refusal rule. Gehen Sie niemals davon aus, dass die App einen nicht zusammengeführten Löschvorgang stoppt, nur weil native -d dies getan hat. In diesem Kurs beweisen wir, dass die Einwegspitze ein Vorfahre von main before either path ist, behalten die Funktion bei und wählen niemals eine Remote-Löschaktion aus.
Vollständige Funktionsdatei
An der Funktion ändert sich nur index.html. Ersetzen Sie es durch das vollständige HTML-03. Vorhandene Stile/Skripte/Verläufe bleiben genau so, wie sie in Lektion 8 verlassen wurden. Der Name des Themenzweigs ist wörtlich, der Abschnitt enthält jedoch keine Preise oder Werbeaktionen.
<!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>In GitTree
- Vergewissern Sie sich, dass sich das Original beim Commit des Verlaufsdokuments im Hauptordner befindet und sauber ist. Öffnen Sie Command Palette… (Befehl/Strg+Umschalt+P) → Create Branch… (
repo.branch.create). Erwarten Sie Create a branch at HEAD. - Setze Branch name =
practice/rename-me. Uncheck Check out the new branch. Wählen Sie Create Branch. Erwarten Sie den neuen Ref beim selben Commit, während die Hauptreste ausgecheckt sind. - Klicken Sie in der lokalen Filialliste mit der rechten Maustaste auf practice/rename-me → Rename practice/rename-me…. Legen Sie in Rename practice/rename-me den Filialnamen auf
practice/renamedund dann auf Rename fest. Erwarten Sie, dass der alte Name fehlt und der neue Name gleichzeitig angezeigt wird. keine Dateiänderungen. - Beweisen Sie im Terminal die unten stehende Vorfahrenbedingung. Klicken Sie dann mit der rechten Maustaste auf „Üben/umbenannt“ → Delete practice/renamed…. Überprüfen Sie Delete practice/renamed in gittree-features?, stellen Sie sicher, dass nur die lokale Referenz als Ziel ausgewählt ist, und dann Delete practice/renamed. Bei abweichendem Namen/Tipp abbrechen. Die Quelle verspricht einen Müll-/Tagebucheintrag vor der Mutation, keine Remote-Wiederherstellung; Erfassen Sie den tatsächlichen Vorgang/Beweis, bevor Sie ihn als laufzeitbewährt bezeichnen.
- Palette „Zweig erstellen…“ erneut, benennen Sie
feature/pricing-cards, lassen Sie Check out the new branch aktiviert und erstellen Sie dann einen Zweig. Erwarten Sie, dass die Funktion im selben H5 getestet wird. Dieses Kontrollkästchen bewirkt, dass der Vorgang im Gegensatz zu Schritt 2 den Schalter and erstellt. - Dateien anzeigen (Befehl/Strg+Umschalt+E), fokussieren Sie index.html und drücken Sie die Eingabetaste. Ersetzen Sie den Arbeitstext durch vollständiges HTML-03 und Save (Befehl/Strg+S). Generierte Distanz nicht bereitstellen.
- Zurück zu Grafik → Palette Show Working Changes. Überprüfen Sie index.html und verwenden Sie Stage File. Zusammenfassung
feat: add workflow cards; gewöhnliche Optionen aus; Commit Changes to 1 File / Befehl/Strg+Eingabe einmal. - Klicken Sie mit der rechten Maustaste auf main in der lokalen Filialliste → Checkout main. Erwarten Sie den Helden der Dokumenten-Ära ohne Workflow-Abschnitt und saubere Arbeit. Klicken Sie mit der rechten Maustaste auf „Feature/Pricing-Cards“ → Checkout feature/pricing-cards, um zurückzukehren. Sein Abschnitt wird erneut angezeigt, da der festgeschriebene Baum des Zweigs abweicht.
- Wenn ein Dirty-Switch-Dialog erscheint, Cancel und überprüfen Sie Ihre tatsächliche Arbeit. Die kanonischen Schaltpunkte sind sauber; Wählen Sie keine zum Film passende Ablageoption.
- Beenden Sie mit den Feature-/Preiskarten. Bestätigen Sie, dass main fünf Commits hat und die Funktion einen zusätzlichen Commit hat. Führen Sie not noch zusammen oder löschen Sie es, um ein einzeiliges Diagramm zu erhalten.
Kontextaktionen für benannte Referenzen sind keine generischen Palettenbefehle ohne Argumente. Die Top-Level-Palette „Zweig erstellen…“ ist eine separate Current-HEAD-Aktion. Verwenden Sie tatsächliche Menübezeichnungen; Die Standardverknüpfungen zum direkten Erstellen/Wechseln von Zweigen sind nicht erfunden.
Im Terminal
Natives Äquivalent am sauberen Haupteingang; Mutationen nach App-Erfolg nicht wiederholen:
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 mainDie Verzweigungs-/Umbenennungs-/Vorfahrenprüfungen waren bisher erfolgreich. symbolische Referenz druckt:
mainDer Ausgang 0 der Ancestor-Abfrage beweist, dass dieser Einweg-Tipp bereits erreichbar ist. Ein Ergebnis ungleich Null bedeutet Stopp; ersetzen Sie nicht die erzwungene Löschung.
git branch --delete --quiet practice/renamed
git switch --quiet --create feature/pricing-cardsBeides gelang im Stillen. Nach dem vollständigen Speichern von HTML-03:
git add -- index.html
git commit --quiet -m "feat: add workflow cards"
git switch --quiet mainAlles gelang lautlos in der Vorrichtung. Dieser Hauptschalter verschiebt die Funktionsreferenz nicht.
Absichtliche native Ablehnung, während main ausgecheckt ist:
git -c advice.forceDeleteBranch=false branch -d feature/pricing-cardsBeobachteter stderr, Exit 1:
error: the branch 'feature/pricing-cards' is not fully mergedDie Funktion bleibt bestehen. Do not attempt this as an app safety test: Die Richtlinie zum geschützten Löschen ist unterschiedlich. Ersetzen Sie -d nicht durch -D, um die Lektion zu „reparieren“.
Zurücksenden und prüfen:
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 --shortBeobachtete Ausgänge nach dem stillen Schalter, in der Reihenfolge:
feature/pricing-cards
feature/pricing-cards
main
1
feat: add workflow cards
index.html
5Der endgültige Kurzstatus ist leer mit Exit 0. Beide verfügbaren Namen fehlen. Es ist kein Remote-Ausgang vorhanden, da keiner konfiguriert wurde.
Ergebnis
Am Ende dieser Lektion: Feature-/Preiskarten ausgecheckt und bereinigt, ein Feature-Commit über Main hinaus; main bleibt am Fünf-Commit-Dokumentkontrollpunkt. Workflowkarten enthalten keinen Preis. Einwegzweige fehlen. Keine Merge-, Remote-, veröffentlichte Branch- oder Provider-Aktion.
Häufige Fehler
- Zweigbezeichnungen als Commits zählen.
- Vorausgesetzt, HEAD wurde nur erstellt und verschoben.
- Umbenennen des aktiven Source-Web-Zweigs anstelle der Demo-Referenz.
- Zu glauben, dass das Löschen einer App den Schutz von native -d hat.
- Löschen der nützlichen Funktion zur Vereinfachung des Diagramms.
Wenn etwas schief geht
Bei ungültigen/doppelten Namen sollte das Dialogfeld mit dem eingegebenen Wert geöffnet bleiben. Lesen Sie den Fehler; Beheben Sie Unklarheiten, die sich nur auf die Groß-/Kleinschreibung beziehen, nicht durch Umbenennen nicht verwandter Verweise. Wenn die Arbeit einen Schalter blockiert, brechen Sie ihn ab und bewahren Sie ihn auf; Spätere Stash/Commit-Lektionen bieten bewusste Entscheidungen. Ein in einem anderen Arbeitsbaum ausgecheckter Zweig kann nicht einfach gelöscht werden.
Eine native, nicht zusammengeführte Ablehnung ist schützend. Der Snapshot der App vor der Mutation ist ein anderer Mechanismus und keine Erlaubnis, die Erreichbarkeit oder die Tippidentität zu ignorieren. Eine fehlgeschlagene Mutation darf nicht als Erfolg dargestellt werden, nur weil eine Markierung vorübergehend aus einer gefilterten Ansicht verschwunden ist.
Überprüfen Sie Ihr Verständnis
Beantworten Sie jede Frage und lesen Sie dann, warum. Mit „erforderlich“ gekennzeichnete Fragen zählen zum Abschluss der Lektion.
0 von 6 korrekt
Beantworten Sie die erforderlichen Fragen richtig, um die Lektion abzuschließen.
In diesem Browser überprüft.
Üben
Main unverändert anzeigen und Feature einen Commit voraus. Geänderte Eingabe: Wenn das Auschecken des neuen Zweigs off ist, bleibt Predict HEAD bis zu einem expliziten Wechsel Hauptzweig. Testen Sie in einer separaten Einwegwiederholung, nicht durch Änderung des fertigen Prüfpunkts. Erklären Sie, warum die native Ablehnung keine App-Ablehnung beweist.
Ihre eigene Bestätigung: Die Website kann Ihren Computer nicht sehen.
Um die Lektion abzuschließen, beantworten Sie die erforderlichen Fragen richtig und bestätigen Sie die praktische Übung.
Zusammenfassung
- Zweignamen und Commits sind unterschiedliche Objekte.
- „Nur erstellen“ und „Erstellen und Wechseln“ haben unterschiedliche HEAD-Effekte.
- Löschumfang und Erreichbarkeit nachweisen; Das Löschen geschützter Apps und natives -d unterscheiden sich.
Verwandt
Glossarbegriffe eingeführt
Zweig – فرع; Schalter – تبديل; ref – مرجع; erreichbar – قابل للوصول; stromaufwärts – فرع متتبَّع; Arbeitsbaum – مجلد العمل.
Videotranskript
Die Erzählung des Videos, Stichwort für Stichwort.
Zeigen Sie das Transkript
- Erstellen Sie einen Feature-Zweig unter Beibehaltung des Hauptbestandteils.
- Ein neuer Filialname reicht aus kein Commit erstellen.
- Erstellen Sie das Einwegprodukt name ohne main zu verlassen.
- Bestätigen Sie, dass nur „Erstellen“ möglich ist habe deine Filiale nicht gewechselt.
- Benennen Sie die Einwegreferenz um, nicht Der Quellzweig der Website.
- Überprüfen Sie die aktuelle Einwegspitze ist bereits von main aus erreichbar.
- Löschen Sie nur die vorab markierten Einweg-Referenz.
- Die geschützte Löschung von GitTree ist Nicht native Safe-Delete-Ablehnung.
- Erstellen Sie dieses Mal die Funktion und probieren Sie es aus.
- Speichern Sie den Workflow-Abschnitt ohne Preise oder Sonderangebote.
- Überprüfen Sie die Funktion Geänderte Datei vor dem Festschreiben.
- Legen Sie eine Verpflichtung für die Funktion fest, nicht für die Hauptfunktion.
- Nur der ausgecheckte Zweig Fortschritte mit diesem Commit.
- Beim Umschalten wird der festgeschriebene Hauptbaum ausgewählt.
- Das native sichere Löschen lehnt ab die nicht zusammengeführte Funktion.
- Diese Weigerung beweist nicht, dass GitTree wird die gleiche Löschung ablehnen.
- Kehren Sie zu den Funktionen zurück aufgezeichnete Dateiinhalte.
- Überprüfen Sie ein Feature-Commit und nur Indexpunkt H T M L geändert.
- Main hat noch fünf Commits und die Funktion ist sauber.
- Bei deaktiviertem Checkout der neue Name existiert, aber HEAD bleibt auf main.
- Brechen Sie einen unerwarteten Dirty Switch ab und prüfen Sie zunächst die Arbeit.
- Ein geschützter Ortstipp ist kein Versprechen einer Fernwiederherstellung.
- Behalten Sie die nützliche Funktion bei und überprüfen Sie sie Die Wegwerfnamen sind weg.
- Die nächste Lektion führt ein Fernbedienungen; hier war keiner nötig.