Zum Inhalt springen
GitTree

Lektion 19 · Geschichte und Integration

Verstehen Sie Fast-Forward-Merges

Verschieben Sie einen Zielzweig in einen vorhandenen abgeleiteten Dark-Palette-Commit, ohne einen weiteren Commit zu erstellen. Vergleichen Sie diesen schnellen Vorlauf mit einer abweichenden Eingabe, die abgelehnt werden muss.

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 ansehen

Was Sie lernen werden

  • Erkennen Sie die Vorfahrenanforderung.
  • Beweisen Sie identische Spitzen-IDs nach dem Schnellvorlauf.
  • Trennen Sie die Ref-Bewegung von der Commit-Erstellung.
  • Sagen Sie eine Ablehnung aufgrund einer Divergenz voraus.

Bevor Sie beginnen

Beginnen Sie mit einer separaten Kopie des Ergebnisses von Lektion 18 (hauptsächlich ist die Zusammenführung, bereinigt): Erstellen Sie „szenario/ff-target“ bei diesem Commit, dann „feature/dark-mode“ bei demselben Commit; Die dunkle Palette erhält einen Commit D für das Feature. Kehren Sie vor dem Zusammenführen zu Szenario/FF-Ziel zurück.

Das Video wurde mit Git 2.52.0 und GitTree 2.0 auf Ubuntu 24.04 aufgenommen: Die dunkle Palette, ihr Commit, das Auschecken und beide Zusammenführungen wurden in der App durchgeführt; Die beiden Szenariozweige und die Prüfungen liefen im Terminal ab und die Ablehnung wurde in der App und erneut im Terminal angezeigt. 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

Ein schneller Vorlauf ist möglich, wenn die Zielspitze ein Vorgänger der eingehenden Spitze ist. Durch das Verschieben der Zielbezeichnung auf den Nachkommen werden die dazwischen liegenden Snapshots einbezogen, ohne dass ein Merge-Commit erfunden werden muss.

Der resultierende Tipp weist die vorhandene Identität und das übergeordnete Element von D auf. Das frühere M bleibt eine Zwei-Eltern-Zusammenführung aus Lektion 18; Zählen Sie die übergeordneten Elemente nicht mit und verwechseln Sie sie mit einer neuen Zusammenführung, die in dieser Lektion erstellt wurde.

Der schnelle Vorlauf ist nur ein Policy-Gate, keine Reparatur für alle Zweige. Wenn ein separater Ziel-Commit vorhanden ist, haben beide Tipps einen eindeutigen Verlauf und dieser Modus lehnt ab.

Nur der Zielzweig/HEAD/Index/Arbeitsfortschritt M→D. Das Feature bleibt D, es wird kein neues Commit durch die Zusammenführung erstellt, der Server bleibt unverändert.

Bereiten Sie den genauen Projektstand vor

Beginnen Sie mit einer separaten, gewöhnlichen Kopie des Projekts, so wie es in Lektion 18 hinterlassen wurde. Die ursprünglichen Gittree-Funktionen bleiben erhalten; Führen Sie dieses Szenario nicht im Original- oder Quell-Checkout aus. (In einem früheren Plan des Kurses wurde ein anderer Startkontrollpunkt genannt; das Video verwendet das Ergebnis von Lektion 18 und dieselben Schritte.) Das folgende Stylesheet ist die Datei „styles.css“ des Projekts mit einem hinzugefügten dunklen Palettenblock. 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.

styles.css – DUNKEL

Aktenauszug · css
:root {
  color-scheme: light;
  --page: #f7f8fa;
  --surface: #ffffff;
  --text: #17212e;
  --link: #154ab5;
  --line: #bac4d0;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--page);
  color: var(--text);
  font: 1rem/1.6 system-ui, sans-serif;
}

a {
  color: var(--link);
}

.site-header,
main,
footer {
  width: min(68rem, 100% - 2rem);
  margin-inline: auto;
}

.site-header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem;
  padding-block: 1rem;
}

.hero {
  max-width: 48rem;
  padding-block: 3rem;
}

h1 {
  font-size: clamp(2rem, 5vw, 3.5rem);
  line-height: 1.2;
}

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
  gap: 1rem;
}

.feature-card {
  padding: 1rem;
  border: 1px solid var(--line);
  border-radius: 0.75rem;
  background: var(--surface);
}

section {
  margin-block-end: 2rem;
}

button,
input {
  font: inherit;
}

button,
input {
  padding: 0.5rem 0.75rem;
}

:focus-visible {
  outline: 3px solid var(--link);
  outline-offset: 3px;
}

form {
  display: grid;
  max-width: 28rem;
  gap: 0.5rem;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --page: #121923;
  --surface: #1b2635;
  --text: #edf2f8;
  --link: #a4c6ff;
  --line: #7388a1;
}

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.

  1. Bereiten Sie Szenario/FF-Target und Feature/Dark-Mode in der separaten Kopie wie unten vor; Speichern Sie die Funktion vollständig DUNKEL.
  2. Übertragen Sie nur die Datei „styles.css“ als Leistung: Fügen Sie die dunkle Palette hinzu. Überprüfen Sie Merkmal D.
  3. Öffnen Sie unter „Lokal“ den Ordner scenario, klicken Sie mit der rechten Maustaste auf ff-target → Checkout scenario/ff-target; Stellen Sie sicher, dass es immer noch auf M steht und sauber ist.
  4. Öffnen Sie unter „Lokal“ den Ordner feature, klicken Sie mit der rechten Maustaste auf dark-mode → Merge feature/dark-mode into scenario/ff-target; Überprüfen Sie Quelle und Ziel im Dialog.
  5. Wählen Sie in Record it as Fast-forward only; Wählen Sie nicht „Immer ein Merge-Commit“ aus.
  6. Wählen Sie „Einmal zusammenführen“ und warten Sie. Erwarten Sie, dass die Zielbezeichnung das vorhandene D erreicht.
  7. Vergleichen Sie die tatsächlichen vollständigen SHAs von Ziel und Funktion, überprüfen Sie dann DARK und bereinigen Sie die Arbeit.
  8. Wiederholen Sie in einer separaten divergierten Kopie (öffnen Sie sie über „Neuer Tab“ und „Letzte Repositorys“) die Zusammenführung nur mit Schnellvorlauf: Die App weigert sich und sagt, dass das Ziel Änderungen hat, die Sie noch nicht haben. Lassen Sie das kanonische Original unberührt.

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 18:

Command · bash
git switch --create scenario/ff-target
git switch --create feature/dark-mode

Legen Sie das vollständige DARK-Stylesheet über die Datei „styles.css“ und gehen Sie dann wie folgt vor:

Command · bash
git add -- styles.css
git commit --quiet -m "feat: add the dark palette"
git switch --quiet scenario/ff-target
git merge --quiet --ff-only feature/dark-mode
git rev-parse HEAD feature/dark-mode
git log -1 --format=%s
git status --short

Die SHA-Abfrage liefert zwei identische tatsächliche IDs. Beobachtetes Thema:

Ausgabe
feat: add the dark palette

Status leer. Das Gerät stellte fest, dass das Ziel dem zuvor gemessenen D und nicht einem neu erstellten Zusammenführungsknoten entspricht. Fügen Sie für geänderte Eingaben vor dem Zusammenführen ein unabhängiges docs/integration-note.md-Commit zum Ziel in einer anderen Kopie hinzu. ff-only lehnt ab und behält beide Zweige bei. Wählen Sie nicht stillschweigend einen anderen Modus aus, damit die Richtlinienprüfung grün wird.

Ergebnis

Where you end: scene/ff-target und feature/dark-mode benennen den gleichen vorhandenen D. Ziel HEAD/index/work enthält DARK, kein neuer Merge-Knoten, ursprünglicher main/M unverändert.

Häufige Fehler

  • Durch Aufrufen einer beliebigen grafischen Zeile wird ein neues Zusammenführungs-Commit durchgeführt.
  • Behandeln des alternativen Bereichs als ursprünglichen Prüfpunkt.
  • Wiederholen einer abgeschlossenen Mutation nach App-Erfolg.

Wenn etwas schief geht

Wenn dies abgelehnt wird, überprüfen Sie beide Historien und wählen Sie erst nach der Überprüfung einen separaten Zusammenführungs-/Rebase-Workflow aus. Die Ablehnung selbst ändert keine Zieldateien oder Referenzen.

Ü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.

  1. Frage 1 von 6

    Was ist erforderlich?

    Wählen Sie eine Antwort.

  2. Frage 2 von 6

    Was ändert sich?

    Wählen Sie jede zutreffende Antwort aus.

  3. Frage 3 von 6
    Erforderlich

    Resultierende Ziel-SHA?

    Wählen Sie eine Antwort.

  4. Frage 4 von 6
    Erforderlich

    Unabhängiges Ziel-Commit hinzugefügt: ff-only?

    Wählen Sie eine Antwort.

  5. Frage 5 von 6

    Der alte M hat zwei Eltern: Beweis, dass diese Aktion zusammengeführt wurde?

    Wählen Sie eine Antwort.

  6. Frage 6 von 6
    Erforderlich

    Was beweist die Vollendung?

    Wählen Sie jede zutreffende Antwort aus.

0 von 6 korrekt

Beantworten Sie die erforderlichen Fragen richtig, um die Lektion abzuschließen.

In diesem Browser überprüft.

Üben

Beweisen Sie, dass die Zielspitze mit dem vorhandenen D übereinstimmt und dass die Arbeit vollständig mit DUNKEL übereinstimmt. Vorhersage der Ablehnung nach einem unabhängigen Ziel-Commit in einer separaten Kopie; Vergleichen Sie alte Schiedsrichter nach Ablehnung.

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

  • Die Ahnenbeziehung ermöglicht einen schnellen Vorlauf.
  • Der eingehende Commit behält seine ID.
  • ff-only lehnt Divergenz ab.

Glossarbegriffe eingeführt

Schneller Vorlauf – تقديم سريع; Nachkomme – تابع; Vorfahre – سلف.

Videotranskript

Die Erzählung des Videos, Stichwort für Stichwort.

Zeigen Sie das Transkript
  1. Beginnen Sie am genauen Kontrollpunkt.
  2. Benennen Sie den Zweig und den Index und Arbeitsversion.
  3. Bereiten Sie nur die isolierte Kurskopie vor.
  4. Starten Sie beide Filialnamen gleichzeitig begehen.
  5. Notieren Sie den tatsächlichen Palettenwechsel.
  6. Kehren Sie zum unveränderten Ziel zurück.
  7. Bestätigen Sie die Zusammenführungsrichtung.
  8. Erfordert einen schnellen Vorlauf nur explizit.
  9. Verschieben Sie die Bezeichnung auf den vorhandenen Nachkommen.
  10. Überprüfen Sie Identitäten, nicht nur die Diagrammform.
  11. Bewahren Sie ein divergierendes Ziel anstatt es zu erzwingen.
  12. Was ist erforderlich?
  13. Abstammung, nicht Namen oder Farben, bestimmt den schnellen Vorlauf.
  14. Was ändert sich?
  15. Das Ziel bewegt sich zu einem vorhandenes D ohne Push.
  16. Resultierende Ziel-SHA?
  17. Das gemessene Ziel entspricht den vorherigen Feature-Tipp.
  18. Unabhängiges Ziel-Commit hinzugefügt: ff-only?
  19. Divergenz verstößt gegen die erforderliches Ahnentor.
  20. Old M hat zwei Eltern: Beweis, dass diese Aktion zusammengeführt wurde?
  21. Ms bestehende Abstammung ist es nicht ein neues Commit aus dieser Aktion.
  22. Was beweist die Vollendung?
  23. Sowohl Ref-Identität als auch Dateistatus sind erforderlich.
  24. Überprüfen Sie das tatsächliche Ergebnis, nicht nur eine Nachricht.
  25. Sagen Sie die geänderte Eingabe vorher, bevor Sie handeln.
  26. Bewahren Sie nützliche Arbeit vor der Wiederherstellung auf.
  27. Überprüfen Sie den Kontrollpunkt, bevor Sie fortfahren.
  28. Behalten Sie das überprüfte Ergebnis für den nächsten Schritt.