Vai al contenuto
GitTree

Lezione 16 · Lavoro quotidiano

Correggere un messaggio o un contenuto di commit locale

Correggi un errore di battitura e un messaggio in un commit dell'eroe privato mantenendo il vecchio suggerimento. Scopri perché la modifica sostituisce l'identità e perché i contenuti organizzati non correlati devono rimanere esclusi.

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

  • Ispezionare il commit da sostituire.
  • Separare i contenuti modificati dalla modifica dei soli messaggi.
  • Conserva il vecchio suggerimento impegnato.
  • Verifica la nuova identità e il genitore invariato.

Prima di iniziare

Inizia da una copia separata del risultato della lezione 15, su uno scenario/modifica ramo. L'intera pagina HEADING_DRAFT è stata confermata come correzione: hedaing; l'albero di lavoro è pulito e il commit non è pubblicato. nomi di salvataggio/prima della modifica che corrispondono esattamente al suggerimento della bozza.

Il video è stato registrato con Git 2.52.0 e GitTree 2.0 il Ubuntu 24.04: la correzione, l'emendamento e l'editing del solo messaggio sono stati fatti nell'app; il progetto, il suo ramo di salvataggio e i controlli si sono svolti nel terminal. 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

Modifica scrive una sostituzione per l'ultimo commit dall'indice corrente. Non viene aggiunto un piccolo record di correzione al vecchio commit. Contenuto e messaggio possono cambiare insieme, mentre il vecchio oggetto può rimanere raggiungibile tramite il salvataggio rif.

La modifica dei soli messaggi non deve includere automaticamente modifiche graduali non correlate. Il percorso Modifica messaggio di commit… dell'app riscrive il commit/discendenti selezionati; differisce dal percorso del compositore Modifica commit precedente illustrato qui.

Qui il soggetto modificato garantisce una diversa identità dell'oggetto. Lo stesso genitore non significa lo stesso commit. Non insegnare la modifica come una modifica innocua di un commit pubblicato su cui altri hanno già basato il lavoro.

Il nuovo contenuto dell'indice diventa commit di sostituzione; ramo dello scenario/HEAD sposta il vecchio C→C′, il genitore rimane M, lavoro/indice pulisce. Il salvataggio resta C; principale/server originale invariato.

Preparare lo stato esatto del progetto

Iniziare da una copia ordinaria separata del progetto pulito così come lo ha lasciato la lezione 15. Le funzionalità originali di Gittree rimangono preservate; non eseguire questo scenario nell'originale o nel checkout di origine. (Un piano precedente del corso ha iniziato questa lezione dal risultato di una lezione di unione successiva; quella lezione non è ancora stata registrata, quindi il video utilizza il progetto della lezione 15 e gli stessi passaggi.) I due corpi di pagina sotto sono l'index.html del progetto con solo l'intestazione dell'eroe modificata. La firma demo locale del repository è disattivata e l'identità è GitTree Demo <demo@example.com>.

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 — HEADING_DRAFT

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">
    <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>

indice.html — HEADING_FIXED

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">
    <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>

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. Preparare il progetto privato e il ramo di salvataggio come di seguito; verificare che nessun telecomando contenga la bozza.
  2. Mostra file → indice.html; salva l'intero HEADING_FIXED, preservando tutti gli altri contenuti della pagina.
  3. Mostra modifiche operative; controllare solo la sostituzione dell'intestazione prevista e il file stage index.html.
  4. Nel compositore controlla Amend Previous Commit; ispezionare l'ultimo commit effettivo da sostituire, non una selezione di grafici più vecchi. (In questa build il campo Riepilogo non è compilato con il vecchio messaggio; scrivi quello nuovo nel passaggio successivo.)
  5. Correzione del riepilogo delle impostazioni: chiarire l'intestazione dell'eroe. Mantieni disattivati ​​push/signoff/hook bypass e altri comportamenti opzionali; rivedere i contenuti messi in scena.
  6. Invia una volta con Comando+Invio (Ctrl+Invio su Ubuntu) dal compositore; attendere il completamento effettivo. Non inviare un secondo commit ordinario. L'opzione Modifica commit precedente si disattiva successivamente.
  7. Verificare che l'effettivo C′ differisca dal salvataggio C, stesso genitore, HEADING_FIXED completo e lavoro pulito. Disattiva Modifica commit precedente prima di procedere al lavoro ordinario.
  8. Alternativa di solo messaggio, in una copia separata che contiene ancora la bozza: fai clic con il pulsante destro del mouse sulla bozza di commit → Edit History → Edit Commit Message…. La finestra di dialogo è intitolata "Modifica messaggio di" l'ID breve del commit e dice che il commit e ogni commit sopra di esso ottengono nuovi ID. Sostituisci Message con l'esatto oggetto corretto e scegli Save Message. L'albero e il genitore rimangono gli stessi; cambiano solo l'id e il messaggio. Non ripetere questa operazione sul risultato modificato.

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

Nella copia separata del risultato della lezione 15:

Command · bash
git switch --create scenario/amend

Metti HEADING_DRAFT su index.html (il video ha salvato il file della lezione in ~/Downloads e utilizza cp ~/Downloads/HEADING_DRAFT.html index.html), quindi:

Command · bash
git add -- index.html
git commit --quiet -m "fix: hedaing"
git branch rescue/before-amend

Salva l'intero HEADING_FIXED, quindi:

Command · bash
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 --short

Soggetto osservato:

Uscita
fix: clarify the hero heading

I primi due output SHA differiscono; gli ultimi due sono d'accordo. Il file registrato completo è uguale a HEADING_FIXED, funziona in modo pulito. L'alternativa nativa di soli messaggi in una copia pulita e separata utilizza git commit --amend --only -m "fix: chiarisci l'intestazione dell'eroe"; --only evita di includere percorsi a fasi non correlati per l'attività di soli messaggi. L'operazione di riformulazione del grafico dell'app è un percorso distinto supportato dall'origine; verificarlo nella build installata.

Risultato

Where you end: Il commit sostitutivo dice correzione: chiarisce l'intestazione dell'eroe e contiene l'intero HEADING_FIXED; parent corrisponde al genitore del vecchio commit, l'ID è diverso; vecchia mancia salvata; pulito, inedito.

Errori comuni

  • Modifica con file temporanei non correlati.
  • Trattare il riquadro alternativo come il checkpoint originale.
  • Ripetere una mutazione completata dopo il successo dell'app.

Se qualcosa va storto

Il ramo di salvataggio nomina la vecchia bozza impegnata. Confrontare prima di scegliere un restauro; non preserva le modifiche arbitrarie non graduali. Se gli hook/la firma falliscono, controlla l'output reale, non ignorarli per adattarli alla lezione.

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 crea la modifica?

    Scegli una risposta.

  2. Domanda 2 di 6

    Cosa deve essere rivisto?

    Scegli ogni risposta applicabile.

  3. Domanda 3 di 6
    Obbligatorio

    Genitore del C′ corretto?

    Scegli una risposta.

  4. Domanda 4 di 6
    Obbligatorio

    Aggiungi un file di stage non correlato prima della modifica: contenuto?

    Scegli una risposta.

  5. Domanda 5 di 6

    La bozza è stata pubblicata: procedere come privato?

    Scegli una risposta.

  6. Domanda 6 di 6
    Obbligatorio

    Quali prove sono richieste?

    Scegli ogni risposta applicabile.

0 di 6 corretto

Rispondi correttamente alle domande richieste per completare la lezione.

Controllato in questo browser.

Pratica

Dimostrare lo stesso genitore, l'ID oggetto modificato, l'esatta intestazione/messaggio corretto e lo stato pulito. Prevedi in che modo un file aggiuntivo modificato dal compositore modifica il contenuto in una riproduzione 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

  • Modifica crea una sostituzione.
  • L'indice controlla il contenuto modificato.
  • Solo messaggio è un ambito separato.

Termini del glossario introdotti

Modificare — تعديل الإيداع الأخير; riformulare: إعادة صياغة; commit di sostituzione — إيداع بديل.

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. Proteggi la bozza privata prima di sostituirlo.
  5. Salvare la correzione completa prevista.
  6. Esamina l'indice, non solo il messaggio.
  7. Modifica sostituisce l'ultimo commit effettivo.
  8. Scrivi esplicitamente l'oggetto corretto.
  9. Invia la sostituzione una sola volta.
  10. Stesso genitore non significa stessa identità.
  11. La modifica dei soli messaggi ha un ambito separato.
  12. Cosa crea la modifica?
  13. Gli oggetti Git sono immutabili; la sostituzione ottiene un nuovo ID.
  14. Cosa deve essere rivisto?
  15. Il compositore modifica utilizza l'indice e l'ultimo contesto di commit.
  16. Genitore del C′ corretto?
  17. Il sostituto occupa la stessa posizione ancestrale.
  18. Aggiungi una fase non correlata file prima della modifica: contenuto?
  19. L'indice corrente definisce l'albero sostitutivo.
  20. La bozza è stata pubblicata: procedere come privato?
  21. L'identità pubblicata può essere utilizzata da altri.
  22. Quali prove sono richieste?
  23. Verificare entrambe le sostituzioni identità e contenuto previsto.
  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.