Vai al contenuto
GitTree

Lezione 8 · Lavoro quotidiano

Leggi la cronologia senza muovere la TESTA

Registra la modifica del raggio rimanente, documenta la cronologia effettiva e confronta i set di revisioni con le differenze nell'albero dei file. La selezione di una riga del grafico costituisce un'ispezione, non un cambio di ramo.

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

  • Distinguere HEAD, un commit selezionato, un autore e un committer.
  • Seguire i genitori e gli antenati primogenitori.
  • Leggi i set di log a due/tre punti senza confonderli con gli endpoint diff.
  • Confronta due commit effettivi in GitTree senza riscrivere la cronologia.

Prima di iniziare

Inizi da dove è finita la lezione 7: main ha tre commit dalle lezioni dalla 5 alla 7. Solo il raggio CSS rimane modificato: HEAD e l'indice contengono CSS-02-INDEX, il file di lavoro CSS-02-WORKING. Nessun telecomando. Il video è stato registrato con Git 2.52.0 e GitTree 2.0 su Ubuntu 24.04: entrambi i commit, il documento, l'ispezione del grafico, la ricerca, Jump to HEAD e Confronta riferimenti sono stati eseguiti nell'app e i controlli del terminale sono stati eseguiti rispetto a ciò che l'app ha creato, quindi gli ID di commit mostrati sono quelli confrontati dall'app. Il caso del ramo divergente è un diagramma: non è stato creato alcun ramo di funzionalità. Non è stato eseguito nulla su macOS o Windows e Ubuntu è l'unico sistema Linux registrato. Il minimo di origine di GitTree è Git 2.39.0; una volta effettuato l'accesso, l'ispezione locale e i commit rientrano nel piano gratuito.

Concetto

Un commit registra un albero, metadati e ID genitore. Un ramo nomina un commit; HEAD solitamente nomina il ramo corrente. Facendo clic su un'altra riga del grafico vengono modificati i file selection dell'app, non HEAD, il ramo o i file del disco. L'autore registra chi ha scritto l'opera; il committer registra chi ha registrato questo commit. Capita che qui abbiano la stessa identità immaginaria.

Per una catena lineare, HEAD~1 segue un arco del primo genitore; HEAD~2 segue il due. HEAD^1 è il primo genitore; HEAD^2 significa second parent of one commit, non "due commit indietro". Un commit non di unione non ha un secondo genitore.

git log A..B significa raggiungibile da B escludendo raggiungibile da A. git log A...B significa differenza simmetrica di raggiungibilità. git diff A B confronta gli alberi degli endpoint, mentre git diff A...B confronta merge-base(A,B) con B. Un registro a tre punti e una differenza a tre punti non pongono la stessa domanda. Su questa storia lineare capita che alcuni risultati concordino; non generalizzare quella coincidenza a rami divergenti. Notazione di revisione, semantica diff.

La lettura/selezione/ricerca non modifica alcun indice, byte di lavoro o riferimenti. I due commit espliciti di questa lezione spostano il main locale: prima il raggio, poi la documentazione. Nessuna modifica remota.

Documento storico completo

Per prima cosa conferma la modifica del raggio esistente come mostrato di seguito. Quindi crea docs/history.md con questo corpo UTF-8/LF completo; il suo elemento finale descrive il commit che conterrà il documento, non uno SHA inventato.

Estratto del file · markdown
# GitTree Features history

The first-parent chain on main, oldest first:

1. feat: add the GitTree Features hero
2. feat: add styling and local project checks
3. feat: refine the hero and card spacing
4. style: finish the card radius change
5. docs: record logs-and-revisions practice

After this document is committed, HEAD names item 5.
HEAD~1 names item 4; HEAD~2 names item 3.
Selecting a graph row does not move HEAD.
These labels are descriptions, not fabricated commit SHAs.

All identities in this project are fictional.

Non aggiungere il taccuino di esercitazione facoltativo o commit di pulizia aggiuntivi a questa catena di cinque commit.

Tra GitTree

  1. Tavolozza Show Working Changes (Comando/Ctrl+Maiusc+P per aprire la tavolozza). Fai clic su stili.css sotto Unstaged Files. Conferma solo il raggio 0,5 rem → rimane 0,75 rem; non ripetere la modifica della larghezza precedente.
  2. Scegli la sua azione di riga Stage File, inserisci Riepilogo style: finish the card radius change, opzioni ordinarie disattivate, quindi Commit Changes to 1 File (o Comando/Ctrl+Invio una volta). Verifica quattro commit e pulisci lo stato tracciato.
  3. Tavolozza New File… → Path from the project folder = docs/history.md → Create. Incolla il documento completo e Save. Back to Graph → Show Working Changes → File di stage per docs/history.md.
  4. Riepilogo docs: record logs-and-revisions practice; commettere un file. La catena prevista ora ha cinque commit.
  5. Fai clic sulla riga dell'eroe principale. Controlla il suo reale SHA, oggetto, autore/committente e stato principale di root commit nei dettagli del commit. Fare clic sull'ultima riga; confrontare la sua relazione genitore. Non invocare Check Out This Commit semplicemente per leggerlo.
  6. Nei dettagli del commit attiva View all files per distinguere l'intero albero del commit solo dai percorsi modificati; ispezionare il documento alla sua revisione registrata. Ciò non modifica il file di lavoro.
  7. Ritorna Back to Graph; usa la tavolozza Search Loaded History o Comando/Ctrl+F while the graph is active, digita radius e controlla la cronologia caricata corrispondente. In un editor lo stesso accordo trova il testo dell'editor. Cancella la ricerca in seguito. Una ricerca nella cronologia caricata non è una query di cronologia a livello di server.
  8. La tavolozza Jump to HEAD, Comando/Ctrl+Maiusc+H, individua il suggerimento corrente. La selezione/ricerca può spostarsi mentre il git symbolic-ref --short HEAD nativo riporta ancora main.
  9. Utilizza git rev-parse HEAD~2 nativo per ottenere il suo ID commit real; non viene fornito alcun corso fisso SHA. La tavolozza Compare References… (repo.compareRefs) apre Compare References. In Old side, incolla l'ID misurato e seleziona la sua opzione di commit; in New side, scegli TESTA. Il selettore accetta un ID di commit, non la promessa che le espressioni di revisione arbitrarie vengano analizzate lì.
  10. Sotto What to compare, scegli The two endpoints quindi Compare. Aspettatevi differenze tra docs/history.md e stili.css per questa catena. Riapri/modifica il confronto e scegli Changes since the merge base con gli stessi lati: l'ascendenza lineare fa coincidere il risultato finale qui. Non dedurre il comportamento del log simmetrico da quella vista. Cancel esce senza modificare la cronologia.

Nel terminale

Alternativa alla mutazione nativa, solo prima del successo dell'app corrispondente:

Command · bash
git add -- styles.css
git commit --quiet -m "style: finish the card radius change"

Entrambi ci sono riusciti in silenzio. Dopo aver salvato l'intero documento:

Command · bash
git add -- docs/history.md
git commit --quiet -m "docs: record logs-and-revisions practice"
git log --reverse --format=%s

Catena osservata completa:

Uscita
feat: add the GitTree Features hero
feat: add styling and local project checks
feat: refine the hero and card spacing
style: finish the card radius change
docs: record logs-and-revisions practice

Esamina il set rispetto all'albero:

Command · bash
git log --format=%s HEAD~2..HEAD
git log --format=%s HEAD~2...HEAD

Ogni query stampata separatamente:

Uscita
docs: record logs-and-revisions practice
style: finish the card radius change

Coincidono solo perché l'endpoint più vecchio è un antenato qui.

Command · bash
git diff --name-only HEAD~2 HEAD
git rev-list --count HEAD
git symbolic-ref --short HEAD

Uscite in ordine:

Uscita
docs/history.md
styles.css
5
main

I due file nominati sono differenze tra alberi, non identità dei due commit restituiti dal log.

Command · bash
git rev-parse --verify --quiet HEAD^2

Non è stato osservato alcun stdout/stderr ed uscita 1: l'ultimo commit non è un'unione. Utilizza invece HEAD~2 per due passaggi primo genitore. Per identificare un ID di confronto reale:

Command · bash
git rev-parse HEAD~2

Leggere il risultato effettivo durante le prove; uno SHA misurato cambia con i metadati di commit e non deve essere copiato da un'etichetta del modello.

Risultato

Alla fine di questa lezione: cinque commit su main nell'ordine documentato; lavoro tracciato/pulizia indice, nessun telecomando o operazione in corso. Il CSS ora ha un raggio di 0,75rem e docs/history.md è impegnato. La lettura di una riga del grafico precedente non ha staccato HEAD.

Errori comuni

  • Trattare la riga selezionata come commit estratto: ispeziona HEAD in modo indipendente.
  • Lettura ^2 come ~2: secondo genitore contro due bordi del primo genitore.
  • Applicazione del significato del registro simmetrico alla differenza a tre punti: la differenza è direzionale dalla base di unione a destra.
  • Supponendo che la ricerca nel grafico copra la cronologia non caricata/non recuperata.

Se qualcosa va storto

Una revisione mancante può significare una discendenza insufficiente, un errore di battitura o un confine superficiale, non corruzione. Verificare la catena e il repository selezionato. Cancella i filtri dell'app prima di concludere un commit svanito. Non recuperare da un fornitore arbitrario, reimpostare o effettuare il checkout semplicemente per riparare una selezione. Se un documento esiste già, controllane il contenuto prima di applicare questo passaggio relativo al nuovo file.

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

    Facendo clic su una riga del grafico precedente, cosa succede qui?

    Scegli una risposta.

  2. Domanda 2 di 6

    Quali affermazioni sono corrette su questa catena lineare a cinque commit?

    Scegli ogni risposta applicabile.

  3. Domanda 3 di 6
    Obbligatorio

    Quali argomenti sono in HEAD~2..HEAD dopo il commit di History.md?

    Scegli una risposta.

  4. Domanda 4 di 6
    Obbligatorio

    Il principale è H5; la caratteristica F discende da H3. Qual è la caratteristica principale nel registro git?

    Scegli una risposta.

  5. Domanda 5 di 6

    Git diff A...B significa il set di log simmetrico?

    Scegli una risposta.

  6. Domanda 6 di 6
    Obbligatorio

    Quali osservazioni dimostrano il checkpoint finito?

    Scegli ogni risposta applicabile.

0 di 6 corretto

Rispondi correttamente alle domande richieste per completare la lezione.

Controllato in questo browser.

Pratica

Seleziona una riga più vecchia e dimostra che HEAD rimane principale. Spiegare perché due voci di registro possono corrispondere a differenze solo in due percorsi. Input modificato: per un ramo separato con un commit da H3 mentre main è su H5, prevedere che main..feature contenga solo quel commit della funzionalità, ma main...feature include anche H4/H5. Non creare quel ramo nel checkpoint canonico; utilizzare una copia usa e getta.

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

  • Selection e HEAD hanno proprietari diversi.
  • La notazione principale e i set di revisione descrivono l'ascendenza, non le modifiche ai file.
  • Confronta gli endpoint reali risolti ed etichetta chiaramente la domanda.

Termini del glossario introdotti

Impegnarsi: إيداع; genitore: إيداع أب; rif: مرجع; revisione: مراجعة; gamma: نطاق; unisci base — أساس الدمج; autore: المؤلف; committer — المُودِع.

Trascrizione video

La narrazione del video, spunto per spunto.

Mostra la trascrizione
  1. Leggi la storia senza spostando la tua filiale attuale.
  2. Per prima cosa ispeziona quello modifica indipendente lasciata da L007.
  3. Registra il raggio come commit locale.
  4. Scrivi la catena documentata utilizzando soggetti, non hash inventati.
  5. Il documento diventa il quinto commit in questa catena.
  6. Verificare prima l'ordine effettivo notazione di revisione dell'insegnamento.
  7. Un nome di ramo e un selezionato le righe del grafico sono diverse.
  8. Selezionando solo la radice modifica il commit ispezionato.
  9. L'albero completo non è solo il list è cambiato in quel commit.
  10. Cerca nella cronologia caricata, no un archivio promesso su tutto il server.
  11. Riporta la selezione al suggerimento corrente.
  12. Il terminale in modo indipendente conferma la filiale in check-out.
  13. Due passaggi genitoriali non sono il secondo genitore di un commit.
  14. Questo commit di non unione non ha un secondo genitore.
  15. Questi insiemi concordano qui perché gli endpoint sono gli antenati.
  16. Una differenza tra alberi nomina i file, non un insieme di identità di commit.
  17. Utilizza un ID commit misurato nel selettore di confronto.
  18. Confronta i due risolti alberi senza cambiare rif.
  19. Questa modalità confronta l'unione base con il lato destro.
  20. Un grafico divergente rende i due intervalli di log differiscono.
  21. Registro a tre punti e tre punti diff rispondi a domande diverse.
  22. Necessita di una selezione sbagliata navigazione, recupero non distruttivo.
  23. Verificare la catena e invariata HEAD prima della ramificazione.
  24. Quindi, crea e cambia nomi di rami deliberatamente.