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.
- Livello: Intermedio
- 9 minuti di lettura
- 5 minuti di video
- Aggiornato
- Prima di questa lezione: Ignora i file e pulisci il lavoro non tracciato in modo sicuro
Avanzamenti salvati in questo browser.
La riproduzione carica il video da YouTube (modalità ottimizzata per la privacy).
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
<!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
<!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.
- Preparare il progetto privato e il ramo di salvataggio come di seguito; verificare che nessun telecomando contenga la bozza.
- Mostra file → indice.html; salva l'intero HEADING_FIXED, preservando tutti gli altri contenuti della pagina.
- Mostra modifiche operative; controllare solo la sostituzione dell'intestazione prevista e il file stage index.html.
- 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.)
- 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.
- 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.
- 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.
- 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:
git switch --create scenario/amendMetti 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:
git add -- index.html
git commit --quiet -m "fix: hedaing"
git branch rescue/before-amendSalva l'intero HEADING_FIXED, quindi:
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 --shortSoggetto osservato:
fix: clarify the hero headingI 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.
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.
Relativo
Termini del glossario introdotti
Modificare — تعديل الإيداع الأخير; riformulare: إعادة صياغة; commit di sostituzione — إيداع بديل.
Trascrizione video
La narrazione del video, spunto per spunto.
Mostra la trascrizione
- Inizia dal checkpoint esatto.
- Assegna un nome al ramo, indice e versione funzionante.
- Preparare solo la copia isolata del corso.
- Proteggi la bozza privata prima di sostituirlo.
- Salvare la correzione completa prevista.
- Esamina l'indice, non solo il messaggio.
- Modifica sostituisce l'ultimo commit effettivo.
- Scrivi esplicitamente l'oggetto corretto.
- Invia la sostituzione una sola volta.
- Stesso genitore non significa stessa identità.
- La modifica dei soli messaggi ha un ambito separato.
- Cosa crea la modifica?
- Gli oggetti Git sono immutabili; la sostituzione ottiene un nuovo ID.
- Cosa deve essere rivisto?
- Il compositore modifica utilizza l'indice e l'ultimo contesto di commit.
- Genitore del C′ corretto?
- Il sostituto occupa la stessa posizione ancestrale.
- Aggiungi una fase non correlata file prima della modifica: contenuto?
- L'indice corrente definisce l'albero sostitutivo.
- La bozza è stata pubblicata: procedere come privato?
- L'identità pubblicata può essere utilizzata da altri.
- Quali prove sono richieste?
- Verificare entrambe le sostituzioni identità e contenuto previsto.
- Verificare il risultato reale, non solo un messaggio.
- Prevedere l'input modificato prima di agire.
- Conservare il lavoro utile prima del ripristino.
- Dimostrare il checkpoint prima di continuare.
- Conserva il risultato verificato per il passo successivo.