Lezione 13 · Lavoro quotidiano
Invia commit e pubblica un ramo
Pubblica il ramo previsto nella nuda origine locale senza sovrascrivere il nuovo main di Leo. Porta avanti esplicitamente il main solo dietro, quindi pubblica la funzionalità con il proprio upstream.
- Livello: Principiante
- 7 minuti di lettura
- 4 minuti di video
- Aggiornato
- Prima di questa lezione: Recupera la modifica di un compagno di squadra senza sostituire la tua pagina
Avanzamenti salvati in questo browser.
La riproduzione carica il video da YouTube (modalità ottimizzata per la privacy).
Cosa imparerai
- Ispezionare l'origine e la destinazione prima del push.
- Avanza velocemente un ramo solo in ritardo senza un commit di unione.
- Pubblica una funzionalità denominata e verificala a monte.
- Distinguere il rifiuto dal lavoro perduto.
Prima di iniziare
Inizia da dove è terminata la lezione 11: main/H6 controllato, origin/main/server H7 con il piè di pagina di Leo, pulito, sei principali contro sette recuperati e 0/1. La caratteristica F1 esiste solo localmente senza upstream.
Il video è stato registrato con Git 2.52.0 e GitTree 2.0 su Ubuntu 24.04: l'avanzamento veloce, i push e l'upstream sono stati eseguiti nell'app; i controlli prima e dopo e il push rifiutato 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
Push propone aggiornamenti ai riferimenti remoti selezionati. Non è un backup di ogni file, buffer o ramo non tracciato. Una destinazione può rifiutare un aggiornamento anche quando la connessione di rete funziona.
L'H7 in entrata discende da main/H6. Un avanzamento veloce può spostarsi da principale a quel discendente senza inventare un commit di unione. Questa operazione di ascendenza definita in modo restrittivo viene qui introdotta; l'integrazione divergente appartiene alle lezioni successive del corso.
La pubblicazione di funzionalità/carte prezzo invia F1 a un nuovo ramo del server. In GitTree quel push non sceglie l'upstream: lo imposti successivamente dalla stessa riga del ramo. Non cambia il ramo corrente né unisce le sue schede del flusso di lavoro in principale. Un push principale no-op riuscito non è un nuovo commit del server.
L'avanzamento veloce esplicito cambia main/HEAD, indice e lavoro in H7. Il push modifica solo il riferimento del server selezionato e il monitoraggio/configurazione locale dopo il successo; non salva il testo non messo in scena. Il main remoto deve mantenere il commit di Leo.
Preparare lo stato esatto del progetto
Usa l'originale dopo la lezione 11, recupero dello sfondo per un'anteprima stabile. Non viene aggiunto alcun nuovo payload di file o notebook. Il rifiuto intenzionale dietro l'elemento principale è una ripresa nativa separata, non un'istruzione per fare clic su push forzato dell'app.
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.
- Su main, ispeziona la sorgente/destinazione effettiva e i conteggi 0/1; non inserire prima il main più vecchio nella ripresa canonica.
- Nel gruppo Remoto del pannello laterale, fai clic con il pulsante destro del mouse su origin/main → Merge origin/main into main. In Record it as scegli Fast-forward only, quindi Merge. Aspettatevi il main in H7 con il piè di pagina di Leo, un genitore e una linea retta nel grafico.
- Esegui le riletture di ascendenza/pulite di seguito; se il principale diverge, Annulla invece di scegliere una modalità di riscrittura.
- Fai clic sulla barra degli strumenti Push nella schermata principale. L'avviso recita “Tutto era già aggiornato.”: non si tratta di un nuovo commit.
- In Locale, apri la cartella feature e fai clic con il pulsante destro del mouse su pricing-cards → Push feature/pricing-cards. Con un telecomando non c'è alcuna finestra di dialogo: l'avviso dice "Caratteristiche/schede prezzi inviate a origine/funzionalità/schede-prezzi".
- La spinta non ha impostato un monte (il ramo non ne aveva). Fai clic con il pulsante destro del mouse sulla stessa riga → Upstream → Set Upstream…, in What should feature/pricing-cards track? scegli origin/feature/pricing-cards, quindi Track. Verificare la funzionalità del server F1 e l'upstream.
- Seleziona le etichette del grafico principale e delle caratteristiche senza effettuare il pagamento; conferma che rimangono suggerimenti diversi e che non è stata visualizzata alcuna unione.
- Lasciare il main controllato, pulito, entrambi i rami del server denominati verificati. Non selezionare Force Push... o pubblicare ogni riferimento.
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
Dalla demo originale, alternativa nativa:
git rev-list --left-right --count main...origin/main
git merge --ff-only --quiet origin/main
git push --quiet origin main
git push --quiet --set-upstream origin feature/pricing-cards
git rev-list --left-right --count main...origin/main
git rev-parse --abbrev-ref 'feature/pricing-cards@{upstream}'
git symbolic-ref --short HEAD
git status --shortPrimo conteggio0/1; avanza velocemente e preme exit 0. I readback finali vengono stampati, in ordine:
0 0
origin/feature/pricing-cards
mainLo stato è silenzioso. Confronta in modo indipendente il server/principale locale e presenta gli SHA effettivi con git ls-remote --heads origin; gli ID variabili devono corrispondere ai suggerimenti locali previsti. Take negativo pre-avanzamento separato separato: git push --quiet origin main exited1 con l'effettivo estratto diagnostico:
! [rejected] main -> main (non-fast-forward)La diagnostica completa nomina l'URL del file locale misurato e i suggerimenti Git. Nessun arbitro a distanza è cambiato in seguito a quel rifiuto; non fabbricare l'URL né ripararlo con la forza.
Risultato
Where you end: principale avanzato velocemente a H7 e ancora estratto/pulito; il server principale rimane H7. La funzione F1 è ora pubblicata come origine/funzionalità/schede prezzi e ne tiene traccia; main e feature non sono stati uniti.
Errori comuni
- Pubblicazione del main corrente quando intendevi la funzionalità denominata.
- Trattare un rifiuto solo dietro come permesso di sovrascrivere Leo.
- Supponendo che il push abbia impostato l'upstream della funzionalità o che l'impostazione abbia unito qualcosa: l'app necessita del passaggio Imposta upstream… separato.
Se qualcosa va storto
Dopo il rifiuto, recupera e controlla la tua ascendenza/destinazione prima di riprovare. Per questo esatto input solo dietro utilizzare l'avanzamento veloce esplicito. Un push remoto non ha un'app generica Annulla; coordinare eventuali successive correzioni a distanza.
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 l'uguaglianza principale/server H7, l'uguaglianza funzionalità/server F1, la funzionalità upstream, il checkout principale invariato e lo stato pulito. In una copia old-main separata prevedi e osserva il rifiuto senza perdere H7.
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
- Ispeziona la destinazione esatta.
- Integra esplicitamente un discendente solo successivo.
- Pubblica un ramo senza unirlo.
Relativo
Termini del glossario introdotti
Spingere: دفع; pubblicare il ramo: نشر فرع; a monte: الفرع المتتبَّع; avanzare velocemente: تقديم سريع.
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.
- Ispezionare la fonte e la destinazione esatte.
- Avanza velocemente solo quando gli antenati lo permettono.
- Interrompere se i rami effettivi si sono divergenti.
- Principale corrisponde già alla destinazione adesso.
- Pubblica il nome caratteristica, non ogni ramo.
- Verificare l'upstream della funzionalità.
- La pubblicazione non unisce la funzionalità.
- Lasciare pulita la parte principale originale.
- Cosa fa pubblicare la F1?
- Invia quel riferimento denominato, non tutti i file funzionanti.
- Quali fatti valgono dopo il successo canonico?
- La sua spinta era già allineata.
- Avanza velocemente da principale/H6 a discendente H7: nuovo commit di unione?
- Il riferimento si sposta su un discendente esistente.
- Cambia input: spingi il vecchio H6 sopra server H7 prima dell'allineamento.
- La take nativa è uscita1, preservando H7.
- Push dice già fino a data. La F1 è pubblicata?
- Il risultato di Main dice niente su un altro rif.
- Quale prova finale è necessaria?
- Confronta gli SHA effettivi per ciascun ramo.
- 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.