Vai al contenuto
GitTree

Lezione 18 · Storia e integrazione

Unisci rami con cronologia divergente

Combina la funzionalità della scheda del flusso di lavoro pubblicata con l'accessibilità indipendente del principale e le modifiche al piè di pagina. Verifica una vera unione a due genitori e la pagina risultante completa.

Avanzamenti salvati in questo browser.

La riproduzione carica il video da YouTube (modalità ottimizzata per la privacy).

Narrazione in inglese · English and Arabic didascalie

Apri la pagina del videoGuarda su YouTube

Cosa imparerai

  • Riconoscere la divergenza dagli antenati.
  • Scegli una modalità di registrazione unione esplicita.
  • Verifica entrambi i genitori e il contenuto combinato.
  • Mantieni l'unione locale separata dalla pubblicazione sul server.

Prima di iniziare

Inizia da dove è terminata la lezione 17: main con il README di Maya commit, clean; le funzionalità/carte dei prezzi pubblicate sono ancora F1, che si dirama da H5. Si salva e si impegna MAIN_ACCESSIBLE come preparazione, in modo che main e la funzionalità abbiano ciascuno commit indipendenti.

Il video è stato registrato con Git 2.52.0 e GitTree 2.0 su Ubuntu 24.04: la pagina, il suo commit e l'unione sono stati eseguiti nell'app; lo stato precedente, l'avanzamento rapido rifiutato in una copia separata e i controlli (inclusi la lanugine, il test e la build del progetto) sono stati eseguiti nel terminale. Non è stato eseguito nulla su macOS o Windows e Ubuntu è l'unico sistema Linux registrato. Il Git floor di origine di GitTree è 2.39.0.

GitTree ti chiede di accedere; il piano gratuito copre quindi ogni passaggio qui. Non è necessario alcun account fornitore, Pro/prova, credenziale API o servizio Internet. Un'origine nuda locale non è GitLab o CI. Tutte le identità utilizzano example.com; non eseguire mai questa lezione all'interno di un checkout di origine.

Effettua mutazioni tramite GitTree o il percorso nativo su input identici, non entrambi consecutivamente. È possibile seguire anche la verifica di sola lettura. Qualsiasi preparazione descritta come lavoro terminale è etichettata come preparazione nativa, mai come funzionalità inventata dell'app.

Effetti del concetto e dello stato

Divergenza significa che nessuna delle punte è semplicemente il discendente verso il quale l'altro ramo può avanzare velocemente. Git trova un antenato comune e combina le modifiche relative ad esso. Il nome di un ramo da solo non può dirti se è necessario un commit di unione.

Un commit di unione registra due genitori in ordine. Il primo genitore è il suggerimento prioritario della filiale verificata; il secondo è il lato unito. I commit delle funzionalità esistenti mantengono la propria identità; un nuovo commit di unione collega i loro antenati.

Nessun conflitto testuale non è prova di correttezza semantica. Verificare la sezione principale focalizzabile, il flusso di lavoro e il promemoria di Leo nel file completo; eseguire i controlli esistenti. Una fusione locale non aggiorna l'origine fino a quando non viene effettuato un push autorizzato separato.

Preparazione e unione spostano principale/HEAD locale e aggiornano indice/lavoro. Il riferimento della caratteristica rimane F1. Entrambi i rami di origine e la v0.1.0 mantengono i suggerimenti precedenti.

Preparare lo stato esatto del progetto

Nel salvataggio principale MAIN_ACCESSIBLE, esegui solo lo stage index.html e la correzione del commit: rendi focalizzabile il punto di riferimento principale. Ciò rende esplicito l'input di unione nativo/app; non eseguire il commit del file UNICO già combinato prima dell'unione.

Completare gli input del file

Risparmia solo nella fase denominata di seguito. Questi sono corpi UTF-8/LF completi con un ritorno a capo finale; non incollare mai le recinzioni Markdown. I file eseguibili non modificati ereditano l'input denominato. Le versioni in varianti separate non devono sovrascrivere l'originale.

indice.html — MAIN_ACCESSIBLE

Estratto del file · 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" tabindex="-1">
    <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>
  </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 — UNISTO

Estratto del file · 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" tabindex="-1">
    <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. Review one change at a time.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

Tra GitTree

Tavolozza: Comando+Maiusc+P (Ctrl+Maiusc+P su Ubuntu); digitare il comando con il nome esatto e selezionarlo. Le azioni di riferimento con nome utilizzano il menu contestuale di quella riga, non una scorciatoia della tavolozza senza argomenti.

  1. Salva MAIN_ACCESSIBLE tramite Mostra file → index.html → Salva; rivedere solo l'aggiunta del tabindex.
  2. Mostra modifiche operative; File di fase index.html; correzione del commit: rende focalizzabile il punto di riferimento principale con le opzioni ordinarie disattivate.
  3. Ispezionare l'ascendenza del grafico principale e delle caratteristiche/carte dei prezzi; tieni il main controllato.
  4. In Locale apri la cartella feature, fai clic con il pulsante destro del mouse su pricing-cards → Merge feature/pricing-cards into main. La finestra di dialogo segue con Record it as.
  5. In Record it as le scelte sono Avanzamento veloce se possibile, altrimenti un commit di unione; Always a merge commit; Solo avanzamento veloce; e Squash in modifiche graduali (nessun commit). Selezionare Sempre un commit di unione. Annulla se l'anteprima effettiva mostra percorsi o conflitti imprevisti.
  6. Scegli Unisci una volta e attendi il completamento effettivo. Non sostituire Squash in modifiche graduali.
  7. Ispeziona i due genitori del commit risultante e confronta il file index.html completo con MERGED; verificare tutte e tre le modifiche indipendenti.
  8. Eseguire i controlli locali e le query sullo stato pulito; lascia main all'unione locale, senza Push After Commit. L'oggetto dell'unione dell'app è "Unisci ramo 'funzionalità/schede prezzi'"; non deve necessariamente corrispondere al messaggio nativo riportato di seguito.

Per ogni commit ordinario: Summary è l'oggetto indicato; Descrizione vuota; Modifica commit precedente, Salta hook, Aggiungi autore firmato, Autore diverso, Push dopo commit e Consenti commit vuoto disattivato; nessun coautore. Metti in stage solo i file nominati, quindi applica le modifiche a N file una volta (File per uno) o Comando+Invio come alternativa. Aspetta il risultato reale. Una lezione che modifica esplicitamente cambia solo l'opzione dichiarata.

Nel terminale

Dopo aver salvato MAIN_ACCESSIBLE, preparazione nativa e unione:

Command · bash
git add -- index.html
git commit --quiet -m "fix: make the main landmark focusable"
git branch course-before-merge
git merge --quiet --no-ff feature/pricing-cards --message "merge: combine workflow cards with accessibility"
git log -1 --format=%s
git rev-list --parents -n 1 HEAD
git status --short

Oggetto reale:

Uscita
merge: combine workflow cards with accessibility

La query principale emette l'effettivo SHA di unione seguito esattamente da due SHA principali; Gli ID variano. L'intero file index.html unito corrispondeva a MERGED byte per byte nell'apparecchiatura; lo stato era vuoto. Non è necessario che l'oggetto nativo esplicito corrisponda all'oggetto generato dall'app: accetta il messaggio effettivo dell'app se ascendenza/contenuto concordano, non sovrapporre mai un messaggio nativo falso.

Command · bash
npm run --silent lint
npm test -- --test-reporter=tap
npm run --silent build

Eseguili contro il checkpoint unito; il testo di origine e il conteggio dei genitori da soli non dimostrano i controlli. La suite di dispositivi ha sei test. Un tentativo separato di solo ff sull'input divergente deve rifiutare anziché scegliere silenziosamente questa modalità di unione.

Risultato

Where you end: Punti principali per unire M con il primo genitore il suggerimento principale preparato e il secondo genitore F1; la pagina UNISA completa contiene le schede del flusso di lavoro, il piè di pagina Leo e il principale focalizzabile. Indice/lavoro pulito; nessuna spinta remota.

Errori comuni

  • Unire la direzione sbagliata.
  • Chiamare una zucca una fusione tra due genitori.
  • Affidarsi all'anteprima senza conflitti come prova semantica.

Se qualcosa va storto

Se un'unione reale si interrompe, mantieni il suo stato operativo e utilizza il flusso di lavoro di conflitto/interruzione insegnato in seguito; non eseguire un ripristino non correlato. Prima di un'unione nativa completata, course-before-merge preserva solo il vecchio suggerimento impegnato, non i byte di lavoro arbitrari.

Controlla la tua comprensione

Rispondi a ciascuna domanda, quindi leggi il motivo. Le domande contrassegnate come "Obbligatorio" contano ai fini del completamento della lezione.

  1. Domanda 1 di 6

    Cosa rende distinto un commit di unione?

    Scegli una risposta.

  2. Domanda 2 di 6

    Quali prove sono necessarie?

    Scegli ogni risposta applicabile.

  3. Domanda 3 di 6
    Obbligatorio

    Cosa succede all'identità della F1?

    Scegli una risposta.

  4. Domanda 4 di 6
    Obbligatorio

    Scegli ff-only su questo input divergente: risultato?

    Scegli una risposta.

  5. Domanda 5 di 6

    Nessun conflitto testuale significa che i test non sono necessari?

    Scegli una risposta.

  6. Domanda 6 di 6
    Obbligatorio

    Qual è l'ambito finale?

    Scegli ogni risposta applicabile.

0 di 6 corretto

Rispondi correttamente alle domande richieste per completare la lezione.

Controllato in questo browser.

Pratica

Verifica i byte UNICI esatti e i due genitori effettivi, con F1 invariato. Prevedere che l'avanzamento veloce solo sull'input divergente originale rifiuta; testare solo in una copia separata.

La tua conferma: il sito non può vedere il tuo computer.

Per completare la lezione rispondere correttamente alle domande richieste e confermare l'esercizio pratico.

Riepilogo

  • La divergenza è una relazione di ascendenza.
  • L'unione preserva le vecchie identità di commit.
  • Sono richiesti sia il controllo dei contenuti che quello dei genitori.

Termini del glossario introdotti

Unisci: دمج; commit di unione — إيداع دمج; antenato comune: سلف مشترك; primo genitore — الأب الأول.

Trascrizione video

La narrazione del video, spunto per spunto.

Mostra la trascrizione
  1. Inizia dal checkpoint esatto.
  2. Assegna un nome al ramo, indice e versione funzionante.
  3. Preparare solo la copia isolata del corso.
  4. Preparare gli indipendenti cambiamento dell’accessibilità.
  5. Registra solo il cambiamento principale previsto.
  6. Ispezionare gli antenati effettivamente divergenti.
  7. Unisci la funzionalità nell'attuale main.
  8. Scegli deliberatamente la modalità di registrazione.
  9. Attendi il risultato della fusione reale.
  10. Verifica entrambi i genitori e il contenuto combinato.
  11. Mantieni questa unione locale fino alla revisione.
  12. Cosa rende distinto un commit di unione?
  13. L'ascendenza è definita dal genitore ID, non messaggio o colore.
  14. Quali prove sono necessarie?
  15. Una fusione strutturalmente valida può ancora avere contenuti errati.
  16. Cosa succede all'identità della F1?
  17. Unisci collega i commit esistenti invece di riprodurli.
  18. Scegli ff-only su questo input divergenti: risultato?
  19. Nessuno dei due suggerimenti è richiesto discendente per un semplice avanzamento veloce.
  20. Nessun conflitto testuale significa che i test non sono necessari?
  21. Esigenze di correttezza semantica revisione e test dei contenuti.
  22. Qual è l'ambito finale?
  23. Nessuna spinta fa parte di questa fusione locale.
  24. Verificare il risultato reale, non solo un messaggio.
  25. Prevedere l'input modificato prima di agire.
  26. Conservare il lavoro utile prima del ripristino.
  27. Dimostrare il checkpoint prima di continuare.
  28. Conserva il risultato verificato per il passo successivo.