Lektion 16 · Alltagsarbeit
Korrigieren Sie eine lokale Commit-Nachricht oder einen lokalen Commit-Inhalt
Korrigieren Sie einen Tippfehler und eine Nachricht in einem privaten Hero-Commit und behalten Sie dabei den alten Tipp bei. Erfahren Sie, warum Änderungen die Identität ersetzen und warum nicht damit in Zusammenhang stehende inszenierte Inhalte draußen bleiben müssen.
- Ebene: Mittelstufe
- 8 Min. gelesen
- 5 Min. Video
- Aktualisiert
- Vor dieser Lektion: Ignorieren Sie Dateien und bereinigen Sie nicht verfolgte Arbeiten sicher
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
- Überprüfen Sie den zu ersetzenden Commit.
- Trennen Sie geänderte Inhalte von der reinen Nachrichtenbearbeitung.
- Bewahren Sie den alten, engagierten Tipp.
- Überprüfen Sie die neue Identität und das unveränderte übergeordnete Element.
Bevor Sie beginnen
Beginnen Sie mit einer separaten Kopie des Ergebnisses von Lektion 15 zu einem Zweigszenario/einer Verzweigungsänderung. Die vollständige HEADING_DRAFT-Seite wird als Fix festgeschrieben: hedaing; Der Arbeitsbaum ist sauber und das Commit ist unveröffentlicht. Rettung/Bevor-Änderung nennt genau den Entwurfstipp.
Das Video wurde mit Git 2.52.0 und GitTree 2.0 am Ubuntu 24.04 aufgenommen: Die Korrektur, die Ergänzung und die reine Nachrichtenbearbeitung wurden in der App durchgeführt; Der Entwurf, seine Rettungsabteilung und die Kontrollen liefen im Terminal. Auf macOS oder Windows wurde nichts ausgeführt, und Ubuntu ist das einzige aufgezeichnete Linux-System. Die Quell-Git-Ebene von GitTree ist 2.39.0.
GitTree fordert Sie auf, sich anzumelden; Der Free-Plan deckt hier dann jeden Schritt ab. Es ist kein Anbieterkonto, Pro-/Testversion, API-Anmeldeinformationen oder Internetdienst erforderlich. Ein lokaler nackter Ursprung ist nicht GitLab oder CI. Alle Identitäten verwenden example.com; Führen Sie diese Lektion niemals innerhalb einer Quellprüfung durch.
Nehmen Sie Mutationen entweder über GitTree oder den nativen Pfad an identischen Eingaben vor, nicht beide nacheinander. In beiden Fällen kann eine schreibgeschützte Überprüfung erfolgen. Jede als Terminalarbeit beschriebene Vorbereitung wird als native Vorbereitung bezeichnet und niemals als erfundene App-Funktion.
Konzept und Zustandswirkungen
Amend schreibt einen Ersatz für den letzten Commit aus dem aktuellen Index. Es wird kein winziger Korrekturdatensatz an den alten Commit angehängt. Inhalt und Nachricht können sich gemeinsam ändern, während das alte Objekt möglicherweise über die Rettungsreferenz erreichbar bleibt.
Bei der reinen Nachrichtenbearbeitung sollten nicht unbemerkt gestaffelte Änderungen einbezogen werden, die nichts damit zu tun haben. Die Route „Commit-Nachricht bearbeiten…“ der App schreibt den ausgewählten Commit/die Nachkommen neu; Es unterscheidet sich vom Composer-Pfad „Vorheriges Commit ändern“, der hier gezeigt wird.
Dabei garantiert das geänderte Subjekt eine andere Objektidentität. Gleiches übergeordnetes Element bedeutet nicht dasselbe Commit. Stellen Sie Änderungen nicht als harmlose Bearbeitung eines veröffentlichten Commits dar, auf dem andere bereits basieren.
Neuer Indexinhalt wird zum Ersatz-Commit; Szenariozweig/HEAD verschiebt altes C→C′, übergeordnetes Element bleibt M, Arbeit/Index sauber. Rettung bleibt C; ursprünglicher Haupt-/Server unverändert.
Bereiten Sie den genauen Projektstand vor
Beginnen Sie mit einer separaten, normalen Kopie des sauberen Projekts, wie es in Lektion 15 hinterlassen wurde. Die ursprünglichen Gittree-Funktionen bleiben erhalten; Führen Sie dieses Szenario nicht im Original- oder Quell-Checkout aus. (Ein früherer Kursplan begann diese Lektion mit dem Ergebnis einer späteren Zusammenführungslektion; diese Lektion wurde noch nicht aufgezeichnet, daher verwendet das Video das Projekt aus Lektion 15 und dieselben Schritte.) Die beiden Seitenkörper unten sind die index.html des Projekts, wobei nur die Überschrift „Hero“ geändert wurde. Die Repository-lokale Demo-Signierung ist deaktiviert und GitTree Demo <demo@example.com> ist die Identität.
Vollständige Dateieingaben
Speichern Sie nur in der unten genannten Phase. Dabei handelt es sich um vollständige UTF-8/LF-Körper mit einem abschließenden Zeilenumbruch; Fügen Sie niemals Markdown-Zäune ein. Unveränderte ausführbare Dateien erben die benannte Eingabe. Versionen in separaten Varianten dürfen das Original nicht überschreiben.
index.html – HEADING_DRAFT
<!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 cleary.</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>
</main>
<footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
<script type="module" src="site.js"></script>
</body>
</html>index.html – HEADING_FIXED
<!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, one change at a time.</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>
</main>
<footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
<script type="module" src="site.js"></script>
</body>
</html>In GitTree
Palette: Befehl+Umschalt+P (Strg+Umschalt+P bei Ubuntu); Geben Sie den genau benannten Befehl ein und wählen Sie ihn aus. Benannte Ref-Aktionen verwenden das Kontextmenü dieser Zeile und keine argumentfreie Palettenverknüpfung.
- Bereiten Sie den privaten Entwurfs- und Rettungszweig wie folgt vor; Bestätigen Sie, dass keine Fernbedienung den Entwurf enthält.
- Dateien anzeigen → index.html; Speichern Sie den gesamten HEADING_FIXED, wobei alle anderen Seiteninhalte erhalten bleiben.
- Arbeitsänderungen anzeigen; Überprüfen Sie nur die vorgesehene Überschriftenersetzung und die Stage-Datei index.html.
- Überprüfen Sie im Composer Amend Previous Commit; Überprüfen Sie den tatsächlich zuletzt ersetzten Commit, nicht eine ältere Diagrammauswahl. (In diesem Build wird das Feld „Zusammenfassung“ nicht mit der alten Nachricht ausgefüllt; Sie schreiben die neue im nächsten Schritt.)
- Fix für die Zusammenfassung festlegen: Klarstellung der Heldenüberschrift. Halten Sie Push/Signoff/Hooks-Bypass und andere optionale Verhaltensweisen ausgeschaltet; Überprüfen Sie inszenierte Inhalte.
- Einmal mit Befehl+Eingabetaste (Strg+Eingabetaste bei Ubuntu) vom Komponisten senden; Warten Sie auf den tatsächlichen Abschluss. Reichen Sie keinen zweiten gewöhnlichen Commit ein. Die Option „Vorheriges Commit ändern“ wird anschließend deaktiviert.
- Stellen Sie sicher, dass sich das tatsächliche C′ vom Rettungs-C unterscheidet, dasselbe übergeordnete Element, vollständiges HEADING_FIXED und saubere Arbeit. Deaktivieren Sie „Vorheriges Commit ändern“ vor späterer normaler Arbeit.
- Nur-Nachricht-Alternative in einer separaten Kopie, die noch den Entwurf enthält: Klicken Sie mit der rechten Maustaste auf den Entwurfs-Commit → Edit History → Edit Commit Message…. Der Dialog trägt den Titel „Nachricht bearbeiten“ der Kurz-ID des Commits und besagt, dass der Commit und jeder darüber liegende Commit neue IDs erhalten. Ersetzen Sie Message durch den genauen korrigierten Betreff und wählen Sie Save Message. Der Baum und das übergeordnete Element bleiben gleich; Nur die ID und die Nachricht ändern sich. Wiederholen Sie dies nicht mit dem geänderten Ergebnis.
Für jeden gewöhnlichen Commit: Zusammenfassung ist der angegebene Betreff; Beschreibung leer; Vorheriges Commit ändern, Hooks überspringen, „Signiert von“ und „Anderer Autor“ hinzufügen, „Nach Commit verschieben“ und „Leeres Commit deaktivieren“ zulassen; keine Co-Autoren. Stellen Sie nur die benannten Dateien bereit und übernehmen Sie dann die Änderungen einmal in N Dateien (Datei für eine) oder alternativ Befehl+Eingabetaste. Warten Sie auf das tatsächliche Ergebnis. Eine Lektion, die explizit Änderungen vornimmt, ändert nur die angegebene Option.
Im Terminal
In der separaten Kopie des Ergebnisses von Lektion 15:
git switch --create scenario/amendSetzen Sie HEADING_DRAFT über index.html (das Video hat die Datei der Lektion in ~/Downloads gespeichert und verwendet cp ~/Downloads/HEADING_DRAFT.html index.html), dann:
git add -- index.html
git commit --quiet -m "fix: hedaing"
git branch rescue/before-amendSpeichern Sie HEADING_FIXED vollständig, dann:
git add -- index.html
git commit --quiet --amend --message "fix: clarify the hero heading"
git log -1 --format=%s
git rev-parse HEAD rescue/before-amend HEAD^ rescue/before-amend^
git status --shortBeobachtetes Thema:
fix: clarify the hero headingDie ersten beiden SHA-Ausgaben unterscheiden sich; Die letzten beiden sind sich einig. Die vollständig aufgezeichnete Datei entspricht HEADING_FIXED, sauber arbeiten. Native Nur-Nachrichten-Alternative in einer separaten, sauberen Entwurfskopie verwendet git commit --amend --only -m "fix: klären Sie die Heldenüberschrift"; --only vermeidet die Einbeziehung unabhängiger bereitgestellter Pfade für diese reine Nachrichtenaufgabe. Der Graph-Reword-Vorgang der App ist eine eindeutige, von der Quelle unterstützte Route. Überprüfen Sie es im installierten Build.
Ergebnis
Where you end: Ersatz-Commit sagt Fix: Klarstellung der Hero-Überschrift und enthält vollständige HEADING_FIXED; Elternteil stimmt mit dem Elternteil des alten Commits überein, ID unterscheidet sich; altes Trinkgeld gerettet; sauber, unveröffentlicht.
Häufige Fehler
- Ergänzung mit nicht verwandten bereitgestellten Dateien.
- Behandeln des alternativen Bereichs als ursprünglichen Prüfpunkt.
- Wiederholen einer abgeschlossenen Mutation nach App-Erfolg.
Wenn etwas schief geht
Die Rettungsabteilung benennt den alten Commit-Draft. Vergleichen Sie, bevor Sie sich für eine Restaurierung entscheiden. Es behält keine willkürlichen, nicht bereitgestellten Änderungen bei. Wenn Hooks/Signaturen fehlschlagen, überprüfen Sie die tatsächliche Ausgabe und umgehen Sie sie nicht, um sie an die Lektion anzupassen.
Ü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
Beweisen Sie das gleiche übergeordnete Element, die geänderte Objekt-ID, die exakt korrigierte Überschrift/Nachricht und den sauberen Status. Sagen Sie voraus, wie eine zusätzlich bereitgestellte Datei den Komponisten verändert, und ändern Sie den Inhalt in einer separaten Wiedergabe.
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
- Amend erstellt einen Ersatz.
- Der Index kontrolliert geänderte Inhalte.
- „Nur Nachricht“ ist ein separater Bereich.
Verwandt
Glossarbegriffe eingeführt
Ändern – تعديل الإيداع الأخير; umformulieren – إعادة صياغة; Ersatz-Commit – Neue Version.
Videotranskript
Die Erzählung des Videos, Stichwort für Stichwort.
Zeigen Sie das Transkript
- Beginnen Sie am genauen Kontrollpunkt.
- Benennen Sie den Zweig und den Index und Arbeitsversion.
- Bereiten Sie nur die isolierte Kurskopie vor.
- Schützen Sie den privaten Entwurf bevor Sie es austauschen.
- Speichern Sie die gesamte beabsichtigte Korrektur.
- Überprüfen Sie den Index, nicht nur die Nachricht.
- Amend ersetzt den eigentlich letzten Commit.
- Schreiben Sie den korrigierten Betreff explizit.
- Reichen Sie den Ersatz nur einmal ein.
- Gleicher Elternteil bedeutet nicht gleiche Identität.
- Die reine Nachrichtenbearbeitung hat einen separaten Bereich.
- Was schafft Amend?
- Git-Objekte sind unveränderlich; Ersatz erhält eine neue ID.
- Was muss überprüft werden?
- Composer-Änderung verwendet den Index und letzter Commit-Kontext.
- Übergeordnetes Element des korrigierten C′?
- Der Ersatz besetzt die gleiche Abstammungsposition.
- Fügen Sie eine unabhängige Bühne hinzu Datei vor Änderung: Inhalt?
- Der aktuelle Index definiert der Ersatzbaum.
- Entwurf wurde veröffentlicht: Als privat fortfahren?
- Die veröffentlichte Identität kann von anderen verwendet werden.
- Welche Nachweise sind erforderlich?
- Überprüfen Sie beide Ersetzungen Identität und beabsichtigter Inhalt.
- Überprüfen Sie das tatsächliche Ergebnis, nicht nur eine Nachricht.
- Sagen Sie die geänderte Eingabe vorher, bevor Sie handeln.
- Bewahren Sie nützliche Arbeit vor der Wiederherstellung auf.
- Überprüfen Sie den Kontrollpunkt, bevor Sie fortfahren.
- Behalten Sie das überprüfte Ergebnis für den nächsten Schritt.