
quindi danno un po ‘di background a questo
questo è qualcosa che sentirai a
molto probabilmente hai sentito dire che è solo
il grafo aciclico diretto e questo era
dicendo che sono stato educato , uniamoci
a Parigi all’inizio di quest’anno e fusione
Hogben e Westby sono un’educatrice lei
insegna alla gente su come usare la marcia no
persone che sono persone nerd che provano
per arrivarci attraverso il giorno e ottenere il
lavoro fatto e dicendo loro che è un
il grafico aciclico è un bugger per tutti
qualsiasi cosa tu abbia davvero bisogno di fare è
dì ok, questo è il modo in cui ottieni il tuo lavoro
fatto orientato alle attività, lascia loro una sorta di lavoro
attraverso se stessi va bene voglio fare
proviamo e usiamo i cancelli per ottenere il
lavoro fatto ma la realtà del
la situazione è che questo non è sempre
andando a farti superare i momenti difficili
la realtà è che è un aciclico
grafico o è un insieme di tutti gli oggetti che sono
non usare mai il grafico aciclico
di nuovo perché non è mai stato dannato
Sente per me
bugger tutti usano per ottenere l’ istruzione ma quando
hai colpito questi capri questi tempi difficili
hai più fusioni in corso
hai rebase, hai ottenuto il forst
spinge tutte queste cose a succedere cose
sta capendo cosa sta succedendo
sotto il cofano è molto molto
importante
senza questo modello mentale interno di
come funziona git sta per diventare
confondere perché ottiene astrazioni o
molto faticoso che tu abbia tentato di scoprire
come funziona, che ti piaccia o no
è una di quelle cose come guidare un
auto sai che non devi sapere come
un motore funziona per guidare una macchina ma se
sai come funzionerà un motore
essere un pilota migliore o almeno essere un
un po ‘ più facile sulla macchina, quindi questo
è uno di quei casi in cui un po ‘
della conoscenza può fare molto per farlo
follow up su quel pozzo, saltiamo
subito ti porteremo
attraverso le basi di ottenere dal
strato di fondo assoluto e tutto il
fino ad alcuni dei più alto livello
concetti è abbastanza stratificato
quello è
i suoi concetti idea costruiti su concetti
costruito su concetti quando andiamo a destra
in fondo è davvero molto semplice
quindi al suo interno la base della base
il blocco di get è il blob
ora i BLOB possono essere diversi tipi di
cose ma alla fine è quello che è
hai a che fare con ingranaggi che alla fine sei
mescolando i blob attorno e collegandoli
insieme e cosa intendo per BLOB
bene è questo quello che stai guardando
ora è l’ interezza del get di basso livello
modello di dati è questo è quello che sembra
semplice semplice, naturalmente, essendo questo
estremamente ingannevole quindi quello che hai
ecco tre tipi di BLOB uno
contenuto che è un dato grezzo che è un file
hai commesso un’immagine che hai
commesso solo file di dati grezzi e loro
ti hanno cancellato cosa fare cosa kit
li prende li comprime
usando il labbro Zed mette un’intestazione su di loro
blocca i risultati e poi da quello
punto su quel pezzo di contenuto del
il file avrà sempre lo stesso hash ora
questo vale per qualsiasi cambio di bene se
si modifica un file e lo si aggiunge per ottenere
è un diverso hash quindi è un
oggetto diverso e questo è come
la segue oh col tempo
ogni cambiamento è diverso da questo
cosa intendono per contenuto indirizzabile
filesystem quando senti quella frase
ogni pezzo di cambiamento ogni cambiamento è un
hash unico in là ma oggetti di
stessi usi non udibili di cui hai bisogno
tipo di legarli insieme al livello successivo
su è l’albero l’albero è anche un blob
dice quanto vicino per lo stesso processo
è hash è che è morto è vissuto
compresso è hash e quindi è
è caduto dentro in una directory di un albero
è molto simile al file di livello UNIX
sistema davvero qualsiasi file system è solo
un file che elenca un gruppo di file di
i loro hash i loro nomi di file alcuni
metadati come loro la modalità file dove
è eseguibile leggibile scrivibile ecc
e potrebbe anche puntare altri alberi
quindi le directory contengono gentilezza
dicendo che altre directory possono fare gli alberi
contengono collegamenti ad altri alberi che possono
anche collegare ad altri alberi eventualmente a
file al livello più alto di quello che è
il commit
questo è quello che siete abituati a trattare con
e tu non devi, puoi
effettivamente operare ad un livello molto più basso
di quello se accoppiato per passare attraverso
quel processo ma il commit è il
unità generale a cui stai lavorando
è come pensiamo a una delle due storie
ottenere commetti alberi puntatori il punto di
file e commit possono puntare ad altri
si impegna potrebbero avere genitori e
importante che potrebbero avere più di
un genitore, ma questa è tutta teoria, facciamo
dare un’occhiata alla pratica attuale questo
è come puoi muoverti
te stesso sul tuo computer così le persone vedono
questo no possiamo eventualmente disattivare questi
le luci di inondazione sì qui si va così
ottenendo crea come probabilmente sapete
crea un nuovo repository di regali noi e
intuizione che è tutto ciò che è è un registro
directory e dentro c’era tutto il
i metadati che i doni contengono e i suoi
completa come probabilmente sapete
quindi diamo un’occhiata all’interno degli oggetti get
qui non c’è niente lì dentro è un
è un nuovo repository è un è vuoto
quindi non c’è nulla da attirare aggiungiamolo
Qualcosa di tocco è solo un’unità
comandare l’equipaggio aggiornerà il
tempo modificato o crea un file così siamo
semplicemente creando un file puramente vuoto qui
e riceviamo l’ aggiunta come probabilmente sapete
che in realtà non crea un commit it
non gli da la storia dice solo io
vuoi che tu sappia questo file da
ora su questo è qualcosa che voglio che tu faccia
traccia ti dirò quando è quando è
cambiato quindi torniamo indietro e guardiamo
a proposito il comando dell’albero a proposito
è dici che questo sarà solo emette un
bella versione stampata della directory
la struttura così come si può vedere qui
crea un blob questo è questo è il
questa è la tua unità di base che file vuoto
è stato aggiunto è stato compresso
che in un file vuoto lo rende effettivamente
più grande e poi aggiunge un’intestazione su di esso
e poi mettilo in rettile
potresti notare che è anche quello orientale
all’inizio cosa
fa si diffonde il carico che stai per fare
ne stiamo creando decine di migliaia
nel corso di un progetto da diffondere
li fuori piuttosto che scaricarli in uno
directory usa le prime due cifre
per tipo di diffonderli attraverso
diverse sottodirectory in stop
sovraccarico degli inode questo è uno di
i campioni sono scritti da Lin con cui parliamo
evolvere nel prototipo originale e
è che è un file system operativo
sistemista, quindi sta pensando a te
sapere come diffondere il carico, ma questo è
è che hai aggiunto un file e ora
c’è un oggetto dentro l’albero così
questo è praticamente tutto
ora ovviamente traccia solo il dumping
oggetti lì dentro senza un vero modo di
legandoli insieme è praticamente tutto
inutile quindi creeremo solo un
impegnarsi molto semplice molto semplice e questo
è
quello è il blob che sembra la mamma originale
a questo è l’albero questo è il come a
singola voce in quell’albero che indica
quel blob e abbiamo il commit che
indica l’albero in modo che sia carina
molto l’anatomia di aa commettere ora
cosa interessante dovrei probabilmente
menzioni qui questo blob che contiene un
il file vuoto ha un hash che hash in qualsiasi
file vuoto in qualsiasi repository ovunque
il mondo avrà sempre questo
lo stesso hash è quello di cui stiamo parlando
circa da un file indirizzabile dal contenuto
sistema che definisce il file
qual è la sua identità, ma così è questo
abbiamo già ma questo non è molto
usato da solo o vogliamo cambiare
quindi è un sistema di controllo della versione che vuoi
aggiungi nuove versioni al nostro progetto
tempo quindi questo è ciò che facciamo ogni commit
può puntare a un commit precedente che ha a
il genitore commette può effettivamente avere di più
di un genitore genitore un concetto lo faremo
torna tra un po ‘ ma questo è come
li incateni insieme ogni commit
indica opzionalmente uno o più
precedenti commette ed è così che tu
definisci il tempo che inizi alla fine
il tuo progetto e puoi tornare indietro
diritto all’inizio forse via
andando via filiali diverse poco
brani di dimensioni diverse ma alla fine
quello è il suo nucleo proprio lì
idee molto molto semplici di cosa si tratta
in realtà significa per te e come puoi
utilizzare questo arriverà in un po ‘
ti mostrerò solo un po ‘
più piccoli punti chiave uno qui è Let’s
crea un vero impegno per il nostro manichino
repository quindi abbiamo creato le modifiche e
preavviso di settimane abbiamo una completamente nuova
blob è quello che sto parlando ogni
l’edizione di una modifica a un file crea a
nuovo blob ogni cambio di file che prendi
un’immagine che hai messo per ottenere che hai
cambiato un pixel ed è completamente
nuovo file ora che può essere abbastanza dispendioso
e ci sono alcuni trucchi
sotto il cofano per rimuovere quello o
ottimizzalo un po ‘di più ma non lo fai
bisogna preoccuparsene troppo
git ha questa idea che non lo siamo
andando a provare e Delta codifica tutto
in anticipo ci proveremo sempre e
memorizzare il vero stato delle cose perché
Delta che codifica cosa può migliorare
tempo ma i tuoi file andranno tutti bene
rimani sempre lo stesso così questo è il
livello più basso di ottenere ma ancora una volta tutto
di cui abbiamo parlato finora sono gli hash
tutto è un hash e non è un
sacco di utilizzare i dati usano vuoi
parla del maestro di cui vuoi parlare
la mia funzione di ramo che si desidera parlare
questa versione particolare di un rilascio come
git è un livello leggermente più alto
concetto chiamato refs e oltre a questo
costruisce rami e tag che sei
probabilmente familiare con i tag non usati
abbastanza tanti rami di rif
i ref non sono generalmente usati da soli
sono un concetto di basso livello , quindi cos’è a
ref un ref è un puntatore a un oggetto e
è così è un modo di dire
associare un nome a un oggetto a un hash
la totalità di essa è molto simile a a
variabile e dico la JJVM
c’è un abile che ha un indirizzo
nella memoria non devi preoccuparti
l’indirizzo in memoria perché hai
dato un nome e tu usi quel nome
da quel momento in poi, che cos’è un ramo
beh, un ramo è solo un dipinto ref
a una divergenza dall’albero principale quindi a
l’oggetto ha una coppia di commit come genitore
ma non succede che non lo facciano tutti
mi manca lo stesso genitore, quindi posso
Dite bene a questo punto questo impegno sono io
andrò sul mio ramo personale di
controllo e ci limitiamo a dare tale oggetto la
i genitori di quel punto vogliamo divergere
da e poi possiamo solo aggiungere un rif
che chiameremo un ramo d’ora in poi
e che sarà l’useremo che a
traccia il nostro ramo che è praticamente tutto
questo è dove branching e tagging
e tutte queste cose sono molto molto veloci
in get perché non sono niente acqua
girovagando un paio di piccoli
puntatori nei file sarà effettivamente vi mostrerà
quello che sembra effettivamente in un po ‘e
qual è il tag che usi probabilmente tag I’m
probabilmente più comunemente usato per le versioni
per dire questo, vuoi tornare indietro?
e trova questa versione del controllo di rilascio
fuori questo tag e tornerai indietro
a quel punto nel tempo e di nuovo lo è
davvero molto semplice l’unico vero
la differenza con un ramo nel tag è
i tag per convenzione non cambiano
i rami delle filiali si muovono
avanti in fasce temporali
rimanere statici nel tempo è possibile firmare
tag se vuoi che sia super preciso
o super sicuro, ma in generale
e ci fidiamo solo delle persone a bussare
intorno al tag mateo non c’è motivo per cui
non potevi entrare in un repository git
e sovrascrivere un tag, ma non sei solo
andando a far fare a tutti gli amici così
diamo un’occhiata a questo di nuovo in pratica
termini che daremo un’occhiata dentro
il nostro repository git il nostro get semplice
repository qui quindi il primo comando sono io
facendo quassù ho intenzione di creare un
tag ha chiamato un tag e noi lo daremo
è un nome quando può cucinare un messaggio
andare con esso che è un modo normale di
fare cose leggermente diverse
saltare qualcosa qui un po ‘
un po ‘ma nel suo cuore è immobile
fondamentalmente la stessa idea è solo una
punto nel tempo che cosa fa un tag con a
il messaggio creerà effettivamente un mini
commit object ma non devi aggiungere
un messaggio in modo da poter creare un tag orso
quello che può fare è letteralmente solo un puntatore
per un oggetto un ramo è sicuramente giusto
un puntatore a un oggetto e se facciamo a
l’albero questo piccolo utile albero di comando
sulla sottostruttura get refs puoi vedere noi
abbiamo creato un sacco di file
stiamo creando un reggiseno un file chiamato a
ramo e noi chiamiamo creato un file sotto
i tag hanno chiamato un tag e se ho cat quel file
non può semplicemente distruggerlo, basta scaricarlo
sullo schermo quali sono i contenuti di
quel file è quello che è il
interezza di ciò che un ref è solo un
puntatore a un hash questo è ancora perché
la ramificazione è così veloce sotto get it is
scrivere letteralmente orfani penso che sia
128 lettere ad una qualunque sia il numero
lettere a cui è scritto
un file quindi succede più o meno
istantaneamente quindi è fondamentalmente il
al prossimo livello e di cui stiamo parlando
come lo manipoliamo giorno per giorno
base quante persone hanno qui
usato reset in gate sì quante persone
lo ha incasinato e ha spazzato via un pezzo del
ripple sì, è fondamentalmente un rito di
passaggio ho intenzione di mostrarvi come ottenere
fuori da quella situazione resettare duro è
fantastico questo è ciò che è resettato
puoi resettare le fratture in giro ora che puoi
fallo letteralmente se sei te stesso se
volevi semplicemente entrando in quello
ottenere la directory refs e oltre a scrivere quello
file ma avete scavare intorno divertente
se un hash alternativo e giusto
spingerlo lì, quindi c’è sempre
reset sta facendo ora sto sorvogliando
qualcosa che il ripristino del tizio ha è diverso
modalità e modificherà anche qualcosa
come la tua area di sosta e la tua
L’ albero di lavoro e duro è particolarmente
aggressivo spazzerà via qualsiasi cambiamento
che hai cose non impegnate come
che ma ancora suo nucleo sarà solo
spostare il rep il
ref ora così a questo punto come puoi vedere
in realtà non distrugge
qualsiasi dato che è effettivamente dentro il tuo
repository è giusto che tu lo faccia
conosci l’hash magico per tornare lì così
Ho resettato che ho resettato ho rovinato
come posso tornare a quello stato bene io
non lo so non ho idea di cosa sia il
precedenti guerre hash dovrò andare
scavando attorno al deposito con
forse decine di migliaia di oggetti che
ho bisogno di scoprire qual è stata la mia magia
oggetto dal passato o potremmo usare ref
registra ogni volta che modifichi tramite gate not
perché sono un minuto che manipola direttamente
file o altro ma ogni volta che lo fai
o effettuare un reset o altra manipolazione di
i riferimenti ottengono un record di esso in a
file di cronologia chiamato registro di rif
quindi se incasini tutto ciò che fai a
ribatte che fai un azzeramento della velocità e hai visto io
voglio tornare a quello stato precedente
quello stato di onore e annullamento è questo
se guardo qui è leggermente
ha commentato che devi sapere come leggere
un po ‘ma è abbastanza ovvio
se conosci la storia del tuo progetto
stesso ma quello che facciamo è che possiamo cercare
cos’è l’hash precedente, quindi siamo tornati
di nuovo hash così quando guardiamo andiamo
il nostro qui è dove abbiamo spostato la testa noi
voglio davvero tornare al precedente
versione non avrei dovuto farlo tu
lo so, sì, torneremo su quello
scusa come abbiamo risolto quello che stava facendo
dicendo altro allora
quindi viene inviato il log di registro che conserva una cronologia
ma lui continua per 90 giorni dal modo in cui la società
come avete visto quando si aggiunge le cose ad un
repository git
crea oggetti e tu stai aggiungendo
aggiungi aggiungi aggiungi aggiungi più versioni di a
aggiungendo un file a un repository che sei
creando un sacco di oggetti che abbiamo
mai effettivamente usato e questo si accumula
nel corso del tempo quindi come gestirlo
gentile è una specie di orfano inutile
oggetti intermedi davvero tipo di
rovinato o rivelare eeeh
quindi cosa aspettiamo perché ha qualcosa
chiamato GC, se sei in forma, pensi
a riguardo se fossi peggio con una JVM o
davvero qualsiasi tipo di orientato agli oggetti
linguaggio o davvero qualsiasi macchina virtuale
sistema in tutto ciò che ha l’idea di
raccolta dei rifiuti è la raccolta dei rifiuti
trova solo tutti gli oggetti che no
più hanno riferimenti validi a loro e
basta reclamarli o cancellare questo caso
li dal disco quindi cosa succede con
GC è in giro per trovare qualsiasi cosa
che non ha più riferimenti validi a
e li cancellerà comunque
conoscere i riferimenti finali tornare indietro
attraverso di loro scopri quali sono
penzoloni alla fine e lo faranno
cancellali ora non è troppo aggressivo
su questo in particolare non lo fa
cancella tutto finché non c’è almeno
due settimane però puoi scavalcare
che puoi impostarlo più a lungo che puoi vedere
il più corto o in questo caso usa la potatura
equals tutto sarà soffiare via nulla di così
questo è davvero il motivo per cui se si fa questo che
reset non andare in giro facendo G
GCS ggc aggressivo in seguito perché
stai distruggendo parte della tua storia
o era un modo per lanciare la tua abilità
recuperare ciò che è stato detto che non lo faresti
normalmente lo fanno generalmente
questo per te l’ altra cosa che
fa e siamo giù in oh quelli
reticenze anche parlare di questo perché
non è molto importante ma è gentile
di utile sapere o in o minimo
interessante sapere che non è solo
estirpare gli oggetti dall’albero in realtà
li comprime così che cosa fa
eversione originariamente o ben in realtà
ha sempre sempre memorizzato le differenze
tra i file nel tempo che sembrava
grande al momento, ma significava se tu
vuole tornare indietro e modificare effettivamente
qualsiasi cosa contenesse era virtualmente
impossibile perché dovevi fondamentalmente
ricrea l’intero repository git
non lo ha fatto ottenere mantiene ogni oggetto
tutto l’intermedio quindi in realtà
modificare la cronologia è molto semplice ma
è anche molto dispendioso, quindi cosa ha git
è Tsang chiamato file di pacchetto che facciamo un GC esso
codificherà temporaneamente tutti questi
sparsi gli oggetti scoprili
lavoro di storia
e conservalo in quali secoli a
disposizione temporanea di un file pack
quello è codificato e compresso delta e
quindi su questo è principalmente per salvare il disco
lo spazio, ma ancora più importante è molto
utile per il networking quando loro quando tu
fare in rete attraverso la rete
trasferimenti che non si desidera trasferire a
oggetto massiccio che vuoi trasferire solo
il minimo indispensabile solo per darti un
un’occhiata veloce a questo è quello che sembra
come facciamo un GC in tutti questi oggetti no
esiste più tempo
sono stati tutti impacchettati in tre
file uno che fa riferimento ai pacchetti
loro stessi che sono i dati reali
e un file di indice questo se hai muck
in giro con i database del disco sembra
un sacco di cose come questo sì, ma
generalmente hanno un file indice e sì
e i dati grezzi sono il file indice
alzò gli occhi e usò per trovare i dati
all’interno del file big blob si, sembra a
un po ‘di Berkeley DB o qualcosa del genere
sembrerà molto simile a te
veramente interessato a questo tipo di
cosa vai a dare un’occhiata dentro i cancelli
fonte che c’è un file nel
la documentazione spiega come il PAC
il file funziona se si tratta di una profonda magia nera
è ottimizzato per i dischi rotanti da colpire
la distanza il modo più ottimale
possibile guadagno questo è stato scritto da un ragazzo
chi fa sistemi operativi e file
sistemi è la magia nera profonda nessuno
sapevo davvero come funzionava a lungo
tempo prima che qualcuno lo colpisse
può ascoltare come diavolo è questo lavoro
e ha appena scaricato un mucchio di
informazioni e l’hanno appena copiato
un file e questa è una documentazione sotto
ottenere l’albero della documentazione interessante
roba se sei davvero nel tuo iper
ottimizzato database tipo di cose questo
è fondamentalmente un mini database ma quello è
quello sguardo a quel livello che abbiamo parlato
su un blob di basso livello abbiamo preso il
rami refs di livello superiore e
manipolandoli e come avvitare
te stesso manipolandolo abbiamo
un livello più alto ora la ramificazione è facile ma
i rami non sono molto utili a meno che tu
può portarli su qualcos’altro
a meno che tu non stia completamente sostituendo il tuo
intero repository puoi farlo ma
in genere vuoi ricomporti in
il flusso principale di sviluppo in alcuni
punto quindi sono oh quindi cos’è un’unione
una fusione naturalmente è solo unirsi a noi
la storia che ci siamo lasciati alle spalle
cosa abbiamo deciso che è ora di tornare
nel mainstream e il lismo emergono
si verifica è un po ‘più complesso perché
alcuni di questi cambiamenti che sono accaduti
tra i due rami potrebbe avere
spesso si sovrappongono , ma non è così
possibile così questo ancora questo guarderà
è emerso il suo commit di unione creato
quando riusciamo a unire questi due flussi di
lo sviluppo come sembra
ancora molto molto semplice è solo un
permesso con due genitori è per questo che tu
può aggirare i rami Brown di leting
dentro prendi e avrai ancora il
storia perché puoi sempre andartene
puoi tornare indietro attraverso un albero
spesso scendi quell’alternativa par-4
guarda cosa è successo e poi torna indietro
oppure puoi semplicemente seguire il main
Branch Hai può sorta di vederlo come una sorta
di un sentiero tortuoso che puoi guardare
di nuovo, ovviamente, non c’è
altrettanto semplice quanto quello di semplice come
dì semplicemente di dirlo, anche se a volte
è questa una fusione veloce avanti se
i tuoi due rami non hanno letto
sei divergente stai prendendo tu sei andato
conosci il master master che sto per fare
creare un ramo
oh sì, ho finito ora e no
ci si è impegnati a padroneggiare ancora perché
preoccuparsi anche facendo una fusione si impegnano
tutto quello che hai fatto è che non c’è niente
per unire non c’è nessun cambiamento
cambi e cancelli di default lo faranno
questo farà un rapido avanzamento unire il
problema c’è che non ti sei unito
impegnarsi qui non ha i due genitori
quindi stai perdendo la storia non più
avere che la consapevolezza che il ramo
mai avvenuto forse a cui non importa
forse non ti interessa
ad alcune persone piace un bel albero ordinato
personalmente mi piace mantenere il contesto se tu
sanno che lo hanno ramificato e forse quello
filiale aveva un nome di biglietto associato con
è un ID per un biglietto JIRA o o
qualunque cosa e poi emergere potresti essere
perdendo questa informazione personalmente io
piace tenerlo intorno così c’è un
emergere come comandante
un’opzione chiamata no FF no fast-forward
e creerà sempre un commit di unione
anche se non ne ha davvero bisogno
e questo è il punto in cui è un manichino
commettere che contiene i due genitori così
che tu sai che il ramo si è verificato
ma in generale questo non lo farà
capita che succeda se sei in aa
Team impegnato che è buono, con un sacco di cose
su o un ramo che dura più di a
pochi minuti da una squadra non banale
allora quello che sta per succedere è che lo sei
andando ad avere alcuni conflitti anche se
in realtà non sono in conflitto con i file
hanno cambiato in entrambi i lati abbiamo bisogno di
assicurati che non lo faranno
causare problemi c’è un numero di
unire le strategie che ottengono usi questo è
un enzima che salta per saltare
questo abbastanza rapidamente sfortunatamente è un
fondamentalmente parlare a se stesso è sufficiente per dire
ottenere l’uso di più strategie unite
sono collegabili che è bello quindi se
hai qualche modulo binario proprietario
formato che ovviamente non è possibile
Unisci formati di modulo binario se non lo fai
sai bene cosa sono ma se tu
personalmente so che il tuo formato binario
è davvero molto simile a un XML binario
e potresti eventualmente unire due modifiche
se non sono in conflitto, puoi farlo
scrivi la tua strategia di fusione per quello
ma quello che git usa di default è
è chiamato qualcosa di ricorsivo ricorsivo
interessante è stato ampiamente testato
su un albero del kernel di Linux che è probabilmente
circa quanto occupato un albero come stai andando
ottenere ed è molto intelligente quello che fa
cammina indietro attraverso l’albero e a ciascuno
punto di ramificazione crea un manichino
commit intermedio e quindi ricorsivo
si fa strada verso l’insieme delle modifiche
Direi che questo è un argomento abbastanza grande in
se sei interessato ad avere un
guarda che ci sono altri tipi di
unire quello che può accadere c’è la canzone chiamata
ore in cui si può essenzialmente solo
dimentica completamente la storia di a
master branch e sostituirlo con il
con un ramo completamente diverso molto
pur mantenendo il contesto non spesso
usato ma a volte è abbastanza utile come
Dico che mi piacerebbe parlare di più su questo
ma è un adattamento
massiccia soggetto in sé e per sé mi
consiglio di andare e di dare un’occhiata in giro
e alcune delle discussioni su come
opere in volta internamente ma basti
dite che il ricorsivo Murchison è stato
ampiamente testato sul kernel di Linux
così verrai da uno dei nostri vecchi amici
Quante persone qui hanno usato rebase a
un certo punto quante persone hanno fregato
fino a circa la metà sì di nuovo a destra
di passaggio quindi ora ne sappiamo un po ‘
sul grafico dell’oggetto di indovinare come è
tutto saggio insieme speriamo sconti
diventa un po ‘più evidente di cosa si tratta
andare su ciò che fa rebase è necessario
il punto di ramificazione che si è verificato con a
dove decidiamo di muoverci su un set a
traccia separata e dice solo che sono
sovrascriverò che cambio quello ma
perché è tutto un hash di cui abbiamo bisogno
ripeti ogni commit in cima al nuovo
punto dove stiamo andando a specie
rebind la storia questo è estremamente
potente perché tu se vuoi un pulito
albero questo è come lo fai perché da
questo punto su cui ora puoi fare un
l’unione veloce avanti se si desidera avere
completare una storia completamente piatto è
è anche estremamente potente perché a
ognuno di quei replay hai il
capacità di andare avanti non mi piace
messaggio di commit, lo cambierò
o mi piacerebbe prendere questi due
commette e li inserisce in uno solo perché
stiamo rivedendo e arriviamo a mietere
possiamo intervenire e cambiare la storia
ma tendiamo a fare qualcos’altro che siamo
barare ma è anche abbastanza potente
di per sé però per ragioni che mostrerò
tu
rebase è una di quelle cose che è
piuttosto facile da rovinare ma lo farai
anche trovare molto molto utile uno dei
le cose più potenti è l’idea di un
rebase interattivo per cui dici che sto andando
per ribattere sta andando a ripetere questo
prima di farlo , mostrami cosa sei
intenzione di fare e poi si può andare in e
Dite bene in realtà questi due commit
dovrebbe essere uno impegna o questi due
si impegna a essere un impegno e avere questo
messaggio o questo messaggio dovrebbe essere modificato
o distruggerò tutto
è un grosso impegno che è quello che
è non è un’opzione lo sconsiglio
Personalmente mi piace mantenere la storia ma
ad alcune persone piace un albero pulito come dico
c’è molto di più di cui parlare qui
ma questo è
davvero il al centro del modello che si ottiene
hai i tuoi oggetti hai i tuoi riferimenti
che puoi costruire rami larghi e
tag e qualsiasi altra cosa desideri sopra
di quello e poi hai leggermente
più alto di quello che hai l’idea di
Unisci dove devi andare
risolvere i cambiamenti tra diversi
rami a un certo punto e tu vuoi
mantieni la cronologia in modo che tu possa averne
metadati nei commit che ti permettono
per memorizzare da dove provengono gli oggetti
dove un pezzo di storia è venuto da come
sei arrivato lì ed è per questo che la fusione funziona
molto meglio di dire sovversione
la sovversione non ha una sua storia
nel suo repository git sa
da dove arriva da dove viene
quindi sa come uscire
difficoltà a parlare di uscire
guai hai visto questo annuncio qui?
questo è per il pari nel Regno Unito
originale Prince of Persia o loro il
nuovo uno le sabbie del tempo era un annuncio I
penso che non ero io in Australia, non va bene
comunque vuoi uscire dai guai
tutti hanno rovinato lì ottenere
repository in generale come dico io
è un rito di passaggio per il nuovo ottenere
gente come oh sì, so cosa sta succedendo
su qui vai a reset o sto per rebase
ins oh merda quindi ecco il nostro preferito
resettare duramente tutti hanno fatto di no
la metà delle persone ha detto no che non l’ho fregato
probabilmente stavi mentendo abbiamo tutti
fatto così è resettato difficile distruggere è
praticamente tutto ciò che muove il riff
di nuovo ad un certo punto forse da qualche parte
completamente altro perché è possibile
essenzialmente iperspazio attraverso il
alberi o da qualche altra parte e lo farà
faranno saltare via qualsiasi cambiamento di scena
farà esplodere in cui si sta lavorando è l’albero
è stato molto utile io uso resettato molto duro
quando sono andato come un hacker
Mi sono reinserito in un caos duro
il mio mi riporta subito a te
conosci la testa in uno stato pulito , ma lo faresti
essere via quando lo fate sarete
spazzare via un sacco di dati potenziali ora
Non posso aiutarti con il lavoro, il lavoro
il cambiamento di lavoro effettivo cambia I
non posso aiutarti con il in ogni lavoro
stagisti nell’albero di lavoro, ma non ha
è stato aggiunto per ottenere non può aiutarti con
quella
ma tutto ciò che viene a conoscenza di
possiamo tornare a così chiunque vuole
prova a indovinare come saremmo usciti
questa situazione sapendo quello che sappiamo ora
lì sì puoi usarli anche tu
ci sono le idee nuove su nuove
bambini dove abbiamo parlato del registro riff
così, quando abbiamo fatto il reset , lo faremmo
sono stato un record di ciò che possiamo
scoprire dove eravamo prima così noi
vai come merci al registro dei riff
scopri dove si trovava questo particolare riff
puntando in precedenza e vai bene ora
sappiamo che vogliamo tornare al nostro impegno
non loro questo sai che muoverti?
dal modo in cui queste sono piccole frecce
c’è un mini tutto intero
lingua e ottenere come riferimento
refs quindi puoi dire come ref – uno lì
– Salire di nuovo due posizioni indietro nel
albero qualunque sia abbastanza complesso
già usarlo molto me stesso è
davvero troppo per ricordare la maggior parte del
tempo è facile guardare attraverso il
Lord registra e scopre di sapere dove
vuoi arrivare a quell’aumento di quota
significa che il team precedente impegnarsi per la
uno che sto guardando attualmente , quindi lo sappiamo
il chiodo di hash così possiamo trovarci qui e
andiamo abbastanza bene
ci permette di usare la stessa cosa che ha ottenuto questo
istituire guai per farci ottenere ottenere
Hard Reset spinge subito indietro a
dove era ora sapete sei fuori
guai di nuovo
spero che giallo un grande io sono carina
sicuramente ognuno di noi è stato rebasato
visto tutto questo si riferisce al non banale
ree-ree base hai fatto un rebase e
hai rotto la build e tu no
so bene perché da qualche parte in questo
albero c’era una sorta di conflitto
errore non e non abbastanza conflittuale a
causa un errore di unione ma in conflitto
abbastanza per essere un fallimento logico molto
peggio di un fallimento fallisce la maggior parte dei fallimenti
sono semplici problemi logici che noi
recentemente settimane la tua vita in modo che cosa abbiamo
fare su questo ora questo in realtà può
applicare a un paio di cose, tra cui
si fonde ma rebase è a
particolarmente buono mi piace questo
perché
è un punto in un ramo di lunga data
ora stavo costantemente ribattendo e ogni
tempo si romperebbe in qualche modo forma o
forma e ho dovuto andare e scoprire così come
Non possiamo farlo ora ho abbastanza
ha trattato questo in dettaglio ma non l’ho fatto
menzionalo quando fai una base RiRi e
ti replay hai effettivamente l’abilità
interporsi in ogni punto e cambiare
la storia o potresti iniettarla
quel punto non cambia la storia ma per
istanza convalida quello che è appena successo
in qualche modo forma o forma come quelli
completare un test al cento per cento
coperture che tutti avete naturalmente
Ho certamente ottenuto il cento per cento
copertura del test come potresti aver provato
tutto così abbiamo la capacità di non farlo
disfare le cose
quindi annulliamo la prima cosa che siamo
andando a fare reset si usa il log RIF a
resettare questo ora possiamo effettivamente mettere un nuovo
canzone chiamata rebase exec rebase exec a
ogni passo lungo la base RiRi eseguirà a
comando per te nel nostro caso il nostro totalmente
incredibile suite di test completa al 100%
corri in ogni punto che sei del RiRi
base e fallirà la prima volta a
prova fallita in modo da poter scoprire molto
rapidamente perché rimanderai il fallimento e tu
può decidere di sistemare in quel
point get letteralmente si fermerà a
quel punto e vai vuoi sistemare
vuoi interrompere questa base si RiRi
ti dà un sacco di opzioni che hai
la capacità di andare posso decidere come
risolvere questo problema in modo da poter vedere che cosa sarà
ci siamo fermati a metà della base RiRi
qui perché i nostri test sono falliti perché io
non ha fatto fare test ora effettuare test
potrebbe essere qualsiasi cosa può essere test MVN IT
potrebbe essere MV un test int quale è il nostro
test particolarmente estremo che
letteralmente eseguito Postgres e pieno
server Tomcat e intere opere e congelato
un sacco di test dipende da come tu
sai che la tua situazione è solo te
avere questa opzione si fa la base RiRi
e puoi dire di controllare ogni passaggio
lungo la strada strumento molto molto utile che
se ti trovi in questa situazione
in particolare i tuoi test sono veloci, fai questo
ogni volta ti risparmia un sacco di
coppia giù la linea, ma non lo è
sempre possibile tornare indietro e cambiare
storia a volte vuoi sistemarti
posto come ti senti qui sapere
git bisect manciata bene oggi uno dei
modi classici per risolvere questo problema
perché tu possiamo farti saltare
in giro nella storia e quando ti rendi conto
che vai ah, che cosa può tornare indietro?
attraverso l’albero ed esegui il test ciascuno
tempo e capire quale era sbagliato
e posso sistemarlo dopo che abbiamo noi
ristretto su quale punto che commettono
si è rotto ed è valido per rebase
può essere applicato alle unioni a cui potrebbe essere applicato
solo un albero piatto completo dove sei
apportare modifiche ti rendi conto in seguito
qualche settimana dopo hai sentito di averlo avuto
rotto qualcosa da qualche parte ma tu no
so bene dove usano molto dentro
non c’è davvero albero di Linux ma cosa
lo fa va in fondo il ghiaccio portellone
ok, inizierà una bisettrice
qui andremo a scegliere questo punto
anche se capita di sapere che è rotto
Sceglierò questo punto che accadrà
sapere che stava funzionando riattraversare
quella storia che ti esegue questo comando
non può mai farlo Matt fallo manualmente
può saltare e fare un po ‘di set
di test manuali e poi dire che era
contrassegnare come buono o cattivo o si può solo
prendilo per eseguire un comando e funzionerà
quelle prove tornerà indietro ma è così
lo fa in modo intelligente
il modo in cui lo fai se tu te se lo fossi
quattro anni mi faranno come posso fare
più velocemente sceglierà un punto da qualche parte
tra il bene e il male fai a
prova se è male andrà più indietro
in tempo se è buono salterà in avanti
nel tempo e lo automatizzerà
processo di scoprire cosa esattamente
successo ora ho appena realizzato che penso di esserlo
correre severamente nel tempo è così
Sono convinto che stiamo parlando per quasi un
ora ora ora in modo che nessuno viene a
il grido mi ha urlato, va bene
ma comunque sono alla fine come puoi
dire che è molto di più può essere facendo qui
ci sono molti e molti esempi
posso dare ma spero di non aver bisogno di farlo
con questa conoscenza di base hai il tuo
oggetti e i tuoi commit e i tuoi alberi
hai i tuoi riferimenti puoi muoverti
e tu puoi manipolarlo direttamente io
significa se sei davvero eccitato che puoi
salta soffiandola più in basso e puoi farlo
catena questi si impegna insieme e loro
hai più genitori genitori e puoi farlo
Unire i punti nella storia divisi
storia ma in realtà è solo tutto
gli oggetti sono indicati da alberi che sono
indicato da commit che sono puntati
per riferimenti e una volta che lo sai
così tante cose cadono una volta
capisci quel modello tutto
altro è costruito sopra a tutto questo
le idee complesse sono solo a strati
in cima a quello e puoi lavorare dal primo
principi e se hai una domanda
puoi andare a lavorare su di esso cosa
successo bene se stavo scrivendo resettarlo
Stavo scrivendo rebase come avrei implementato
va tutto bene in quel caso che posso
probabilmente questo diventa un sacco di cose
ovvio quindi ora abbiamo tutto questo extra
la conoscenza ora spero che tu possa lavorare
attraverso i primi principi per
eventuali problemi che hai in git e, si spera
lo capisci e usa git in a in a
modo diverso dall’altro se
ti senti davvero avvistato
ci sono molti comandi di basso livello a
manipolare ottenere gli alberi direttamente così com’è
torna ai tuoi alberi di produzione e
inizia a fare hacking sui tuoi ref e
forse guardare file e oggetti hash e
tutti questi modi divertenti che puoi direttamente
manipolare un albero se ci fosse dentro
una storia davvero divertente su come Linux
il kernel ha completamente fatto esplodere bitbucket
tempo a causa di qualche magia oscura
la gente ha fatto con le chiavi pubbliche ma si sente
libero di andare fuori e imparare di più
e capirlo di più ma e usarlo
in un modo più potente è solo un
grafico aciclico ma è anche solo un mucchio
di oggetto e puoi manipolarli dentro
qualsiasi programmatore può pasticciare
Presto
– sai che potresti fare il lavoro per un altro
potente o se sei davvero eccitato
avvistato Goff e l’attrezzo si ottiene
effettivamente implementare il nucleo di ottenere
un pomeriggio ora non si può fare un sacco di
cose avanzate non puoi fare il pacchetto
i file non puoi farlo se non lo facciamo
Rete, ma in pratica si potrebbe scrivere a
programma che effettivamente attraverserà
ottenere l’albero e dirti cosa c’è dentro
e la tua relazione è molto semplice
molto potente se sai come funziona
quindi spero che non sia stato utile
rompi questo sull’app se tu se tu
sarebbe e spero che questo vi aiuterà
con il tuo ovviamente il rilascio di
tutto indipendente locale
Non ho un massiccio enorme
queste quantità hanno visto l’ uomo più grande
Vorrei che fossero rilasciati separatamente e
loro parlano friggitrice una API ben definita e
può essere rilasciato separatamente e può
operare in modo indipendente o hanno
dipendenze implicite o esplicite su
l’un l’altro sulle loro versioni in cui
caso non sono davvero pezzi separati
di software se sto usando Amazon Web
Servizi Non ho bisogno che Amazon
aggiornare i loro servizi allo stesso tempo
che aggiorno il mio sistema che parla
ad esso però se lo faccio allora lo sono davvero
parte del server di ricerca web di Amazon Web
che servizi abbiamo passato attraverso questo
è spesso uno di quei cicli di
software in cui si separano le cose
e poi finalmente hai implicito
dipendenze e tu li ricongiungi a noi
ricongiungendo un po ‘di roba nostra quando noi
scoperto che la loro API non lo era
davvero come indipendenza prima di loro
o in alcuni casi abbiamo avuto un sacco di
moduli che volevamo davvero refactoring
in una diversa struttura di
moduli in tal caso ci piacerebbe ricongiungerci
il centro commerciale per ottenere tutti nello stesso
il deposito Ori ha trattato un singolo pezzo di
software su un solo piede la versione
per ogni versione e poi solo quando
sono completamente separati da API
quindi dividerli di nuovo
papà ha detto di dividere qualcosa quando tu
metterlo nello stesso repository è
eccessivamente difficile perché una volta il
possibilità di creare un accoppiamento stretto
succede che accadrà è solo umano
natura se so che quel pezzo di
il software laggiù ha una connessione attiva
oggetto del tatto o del cliente, sto per finire
piuttosto che usare quell’oggetto cliente
di scrivere il mio e di avere un mucchio
di voi conoscete gli oggetti di trasferimento dati
Prenderò scorciatoie è il
la realtà così io ho molto forte
Api molto separate è tutto ciò che hai
la consapevolezza che sono tutti parte
dello stesso progetto e potrebbe essere necessario
aggiornato in linea di massima non è dritto
è che non è semplice uno dei
cose che Amazon ha fatto in particolare
quando il motivo per cui Amazon Web Services
esiste perché è famoso che è venuto
giù dalla cima tutto ciò che esporrà
da solo tramite API REST ci sarà no
dipendenze incrociate tra le nostre diverse
strumenti e il nostro sistema di archiviazione contro il nostro
Computing System e far rispettare che
molto difficile e da quello che sono stati in grado
per trasformarlo in un prodotto perché loro
sono stati costretti a operare come clienti per
l’un l’altro ovunque tu abbia due
persone che possono colludere insieme sei
andando a ottenere questo tipo di sanguinamento di
le dipendenze dei box così dovevano avere
forte separazione c’era un buon cappotto
da Peter sito Seibel su Twitter il
l’altro giorno ha guidato la pratica comune
Lisp anche se non in Common Lisp
leggere il libro è uno dei migliori
tecnico
introduzioni a una lingua o sempre letti
ma ha detto che questa è la legge di Conway
il 21 ° secolo per il cloud set
secolo qualsiasi geograficamente distribuito
la squadra parlerà a questa orribile conversazione
tramite un’interfaccia RPC quindi il mio colore a quello
era se si desidera creare interfacce RPC
separare fisicamente la tua squadra, se tu
vogliono che i micro servizi facciano funzionare tutti
da casa quindi è davvero tanto tempo
la risposta lunga è più che abile
occuparsi di grandi progetti strutturati
è che è usato sul più grande software
progetto nel mondo in questo momento il
tempo per dividere o unire diversi
i moduli dipendono interamente da quanto forte
i tuoi animali domestici si impegnano in una API stabile Oh over
tempo e quanto puoi fermare le persone
dall’assumere che sappiano cos’è
andando avanti sotto il cofano di diversi
i moduli anche se hai un’API forte
se li segnali implicitamente a seconda
sono certi comportamenti, se cambi
quella
sì , si romperà anche capi rimane il
lo stesso Microsoft Windows è un famoso
esempio di questo hanno dovuto mantenere tutto il
vecchi bug e stranezze nel tempo perché
qualsiasi correzione di un bug si romperebbe
qualcosa per qualcuno per qualcuno
chi non era un bug era una caratteristica
quindi è praticamente così che è così
il lungo sconclusionato risponde alla domanda I
spero che aiuti
tutte le altre domande rapide non re re
rebase è quando useresti rebase
contro l’omicidio mi dispiace sì
va bene così il voto rebus contro fusione
generalmente si fondono, a meno che tu non abbia
alcuni pressanti motivi reali ora alcuni
i posti preferiranno un rebase degli alberi pulito
ti darà un albero pulito che è rebase
anche la capacità di Felicity di sistemare a
ramo ti dà la possibilità di andare
guarda ho creato un sacco di quiz
I’ll go commit a Oh fix the commit a fix
il comune per ultimo commette whoops che ho dimenticato
questo lontano blah blah ognuno di quelli
il commit intermedio è rotto e cosa
idealmente quello che ti piacerebbe è avere ciascuno
impegnarsi per essere un completo autosufficiente
modificare
atomico ma discreto, ti dà quindi rebase
la capacità di farlo come parte del tuo
ribadendo è possibile modificare la cronologia ora
beh, penso che sia interessante riguardo a rebase
in realtà non devi dargli un
diverso hash che puoi effettivamente dire
voglio rebase sul posto che sono
già indicando da ma cosa ma in
facendolo, per favore lasciami intervenire e
cambia la cronologia così questa è strana
trucchi
rebase può riavviarsi su qualsiasi cosa
incluso su se stesso, quindi puoi
in realtà vai a leggere rebase che cos’è rebase
è davvero dovrebbe essere davvero volontà
sii un nome migliore per cui ripeti questo
storia
Voglio che la storia inizi da qualche parte
altro o un sacco di storia non portare avanti
a partire da qui, ma io voglio davvero
modificare quella cronologia in ogni punto in modo tale
parlando in generale
preferiamo non fondere nessuna rebase veloce
quando hai bisogno di cambiare la cronologia o
hai davvero hai diverguto finora
che in realtà l’unico modo per farlo è farlo
è quello di rileggere di base in realtà non
capita molto spesso e in generale
avrai una rottura a quel punto
L’ho fatto ma puoi anche unirmi
la storia torna nel tuo albero ma quello
spesso finirà per essere piuttosto disordinato
albero che vuoi mantenere il tuo albero in modo equo
Base riri pulito, ma senza esagerare e
anche tu devi tenere a mente se il tuo se
il tuo rifondare un ramo e poi spingere
in su si sta andando a distruggere il marchio
per chiunque altro lo stia usando
stai riscrivendo la storia quando tirano
in basso sta per cambiare
la loro storia è per questo che tu questo noi
avere questa idea di forza spinge se tu
spingere qualcosa ed è completamente
cambiato di storia, la Riserva lo farà
rifiutalo a meno che tu non dica la forza che è
perché il tuo hash è la testa ha
cambiato completamente aggiungere ora è ora
completamente diverso dalla storia se
qualcun altro stava usando quella storia e
loro vanno e tirano tutto diventa
il caos molto molto velocemente, infatti, c’è
qualcosa chiamato forza con Leafs
via ho scritto un articolo su questo alcuni
mesi fa se sei interessato alla forza di
contratto di locazione quando si spinge e si fa una forza
puoi fare una forza di locazione e cosa
quello è controlli se qualcun altro ha
stato usando quel ramo pure e oh
e poi si rifiuterà di fare la forza
anche se hai detto che il rilascio forzato lo farà
quindi non più sovrascriverlo perché
qualcun altro ha lavorato su questo
ramo pure non è perfetto ma è così
aiuta ma nessuna risposta breve da latte è
di preferenza si fondono la fusione n
riri base veloce per la pulizia
solo a meno che davvero davvero
lavorando in modo molto indipendente e
voglio davvero aggiustare le cose al
momento in cui stai condividendo un ramo tu
non dovrebbe mai ribattere che è una regola d’oro
su un kernel lynx per esempio il momento
hai fatto un rebase o tutti ne hanno spinti
si ramifica una sorta di rebase
non può accadere ree basi sono solo locali
operazione puoi trattarli come un
operazione per spingere su un albero ma se
fai così che stai potenzialmente calpestando
il lavoro di qualcun altro, quindi è ancora così
la versione lunga del verbo ringrazia molto
cazzo
tu
questo è qualcosa che sentirai a
molto probabilmente hai sentito dire che è solo
il grafo aciclico diretto e questo era
dicendo che sono stato educato , uniamoci
a Parigi all’inizio di quest’anno e fusione
Hogben e Westby sono un’educatrice lei
insegna alla gente su come usare la marcia no
persone che sono persone nerd che provano
per arrivarci attraverso il giorno e ottenere il
lavoro fatto e dicendo loro che è un
il grafico aciclico è un bugger per tutti
qualsiasi cosa tu abbia davvero bisogno di fare è
dì ok, questo è il modo in cui ottieni il tuo lavoro
fatto orientato alle attività, lascia loro una sorta di lavoro
attraverso se stessi va bene voglio fare
proviamo e usiamo i cancelli per ottenere il
lavoro fatto ma la realtà del
la situazione è che questo non è sempre
andando a farti superare i momenti difficili
la realtà è che è un aciclico
grafico o è un insieme di tutti gli oggetti che sono
non usare mai il grafico aciclico
di nuovo perché non è mai stato dannato
Sente per me
bugger tutti usano per ottenere l’ istruzione ma quando
hai colpito questi capri questi tempi difficili
hai più fusioni in corso
hai rebase, hai ottenuto il forst
spinge tutte queste cose a succedere cose
sta capendo cosa sta succedendo
sotto il cofano è molto molto
importante
senza questo modello mentale interno di
come funziona git sta per diventare
confondere perché ottiene astrazioni o
molto faticoso che tu abbia tentato di scoprire
come funziona, che ti piaccia o no
è una di quelle cose come guidare un
auto sai che non devi sapere come
un motore funziona per guidare una macchina ma se
sai come funzionerà un motore
essere un pilota migliore o almeno essere un
un po ‘ più facile sulla macchina, quindi questo
è uno di quei casi in cui un po ‘
della conoscenza può fare molto per farlo
follow up su quel pozzo, saltiamo
subito ti porteremo
attraverso le basi di ottenere dal
strato di fondo assoluto e tutto il
fino ad alcuni dei più alto livello
concetti è abbastanza stratificato
quello è
i suoi concetti idea costruiti su concetti
costruito su concetti quando andiamo a destra
in fondo è davvero molto semplice
quindi al suo interno la base della base
il blocco di get è il blob
ora i BLOB possono essere diversi tipi di
cose ma alla fine è quello che è
hai a che fare con ingranaggi che alla fine sei
mescolando i blob attorno e collegandoli
insieme e cosa intendo per BLOB
bene è questo quello che stai guardando
ora è l’ interezza del get di basso livello
modello di dati è questo è quello che sembra
semplice semplice, naturalmente, essendo questo
estremamente ingannevole quindi quello che hai
ecco tre tipi di BLOB uno
contenuto che è un dato grezzo che è un file
hai commesso un’immagine che hai
commesso solo file di dati grezzi e loro
ti hanno cancellato cosa fare cosa kit
li prende li comprime
usando il labbro Zed mette un’intestazione su di loro
blocca i risultati e poi da quello
punto su quel pezzo di contenuto del
il file avrà sempre lo stesso hash ora
questo vale per qualsiasi cambio di bene se
si modifica un file e lo si aggiunge per ottenere
è un diverso hash quindi è un
oggetto diverso e questo è come
la segue oh col tempo
ogni cambiamento è diverso da questo
cosa intendono per contenuto indirizzabile
filesystem quando senti quella frase
ogni pezzo di cambiamento ogni cambiamento è un
hash unico in là ma oggetti di
stessi usi non udibili di cui hai bisogno
tipo di legarli insieme al livello successivo
su è l’albero l’albero è anche un blob
dice quanto vicino per lo stesso processo
è hash è che è morto è vissuto
compresso è hash e quindi è
è caduto dentro in una directory di un albero
è molto simile al file di livello UNIX
sistema davvero qualsiasi file system è solo
un file che elenca un gruppo di file di
i loro hash i loro nomi di file alcuni
metadati come loro la modalità file dove
è eseguibile leggibile scrivibile ecc
e potrebbe anche puntare altri alberi
quindi le directory contengono gentilezza
dicendo che altre directory possono fare gli alberi
contengono collegamenti ad altri alberi che possono
anche collegare ad altri alberi eventualmente a
file al livello più alto di quello che è
il commit
questo è quello che siete abituati a trattare con
e tu non devi, puoi
effettivamente operare ad un livello molto più basso
di quello se accoppiato per passare attraverso
quel processo ma il commit è il
unità generale a cui stai lavorando
è come pensiamo a una delle due storie
ottenere commetti alberi puntatori il punto di
file e commit possono puntare ad altri
si impegna potrebbero avere genitori e
importante che potrebbero avere più di
un genitore, ma questa è tutta teoria, facciamo
dare un’occhiata alla pratica attuale questo
è come puoi muoverti
te stesso sul tuo computer così le persone vedono
questo no possiamo eventualmente disattivare questi
le luci di inondazione sì qui si va così
ottenendo crea come probabilmente sapete
crea un nuovo repository di regali noi e
intuizione che è tutto ciò che è è un registro
directory e dentro c’era tutto il
i metadati che i doni contengono e i suoi
completa come probabilmente sapete
quindi diamo un’occhiata all’interno degli oggetti get
qui non c’è niente lì dentro è un
è un nuovo repository è un è vuoto
quindi non c’è nulla da attirare aggiungiamolo
Qualcosa di tocco è solo un’unità
comandare l’equipaggio aggiornerà il
tempo modificato o crea un file così siamo
semplicemente creando un file puramente vuoto qui
e riceviamo l’ aggiunta come probabilmente sapete
che in realtà non crea un commit it
non gli da la storia dice solo io
vuoi che tu sappia questo file da
ora su questo è qualcosa che voglio che tu faccia
traccia ti dirò quando è quando è
cambiato quindi torniamo indietro e guardiamo
a proposito il comando dell’albero a proposito
è dici che questo sarà solo emette un
bella versione stampata della directory
la struttura così come si può vedere qui
crea un blob questo è questo è il
questa è la tua unità di base che file vuoto
è stato aggiunto è stato compresso
che in un file vuoto lo rende effettivamente
più grande e poi aggiunge un’intestazione su di esso
e poi mettilo in rettile
potresti notare che è anche quello orientale
all’inizio cosa
fa si diffonde il carico che stai per fare
ne stiamo creando decine di migliaia
nel corso di un progetto da diffondere
li fuori piuttosto che scaricarli in uno
directory usa le prime due cifre
per tipo di diffonderli attraverso
diverse sottodirectory in stop
sovraccarico degli inode questo è uno di
i campioni sono scritti da Lin con cui parliamo
evolvere nel prototipo originale e
è che è un file system operativo
sistemista, quindi sta pensando a te
sapere come diffondere il carico, ma questo è
è che hai aggiunto un file e ora
c’è un oggetto dentro l’albero così
questo è praticamente tutto
ora ovviamente traccia solo il dumping
oggetti lì dentro senza un vero modo di
legandoli insieme è praticamente tutto
inutile quindi creeremo solo un
impegnarsi molto semplice molto semplice e questo
è
quello è il blob che sembra la mamma originale
a questo è l’albero questo è il come a
singola voce in quell’albero che indica
quel blob e abbiamo il commit che
indica l’albero in modo che sia carina
molto l’anatomia di aa commettere ora
cosa interessante dovrei probabilmente
menzioni qui questo blob che contiene un
il file vuoto ha un hash che hash in qualsiasi
file vuoto in qualsiasi repository ovunque
il mondo avrà sempre questo
lo stesso hash è quello di cui stiamo parlando
circa da un file indirizzabile dal contenuto
sistema che definisce il file
qual è la sua identità, ma così è questo
abbiamo già ma questo non è molto
usato da solo o vogliamo cambiare
quindi è un sistema di controllo della versione che vuoi
aggiungi nuove versioni al nostro progetto
tempo quindi questo è ciò che facciamo ogni commit
può puntare a un commit precedente che ha a
il genitore commette può effettivamente avere di più
di un genitore genitore un concetto lo faremo
torna tra un po ‘ ma questo è come
li incateni insieme ogni commit
indica opzionalmente uno o più
precedenti commette ed è così che tu
definisci il tempo che inizi alla fine
il tuo progetto e puoi tornare indietro
diritto all’inizio forse via
andando via filiali diverse poco
brani di dimensioni diverse ma alla fine
quello è il suo nucleo proprio lì
idee molto molto semplici di cosa si tratta
in realtà significa per te e come puoi
utilizzare questo arriverà in un po ‘
ti mostrerò solo un po ‘
più piccoli punti chiave uno qui è Let’s
crea un vero impegno per il nostro manichino
repository quindi abbiamo creato le modifiche e
preavviso di settimane abbiamo una completamente nuova
blob è quello che sto parlando ogni
l’edizione di una modifica a un file crea a
nuovo blob ogni cambio di file che prendi
un’immagine che hai messo per ottenere che hai
cambiato un pixel ed è completamente
nuovo file ora che può essere abbastanza dispendioso
e ci sono alcuni trucchi
sotto il cofano per rimuovere quello o
ottimizzalo un po ‘di più ma non lo fai
bisogna preoccuparsene troppo
git ha questa idea che non lo siamo
andando a provare e Delta codifica tutto
in anticipo ci proveremo sempre e
memorizzare il vero stato delle cose perché
Delta che codifica cosa può migliorare
tempo ma i tuoi file andranno tutti bene
rimani sempre lo stesso così questo è il
livello più basso di ottenere ma ancora una volta tutto
di cui abbiamo parlato finora sono gli hash
tutto è un hash e non è un
sacco di utilizzare i dati usano vuoi
parla del maestro di cui vuoi parlare
la mia funzione di ramo che si desidera parlare
questa versione particolare di un rilascio come
git è un livello leggermente più alto
concetto chiamato refs e oltre a questo
costruisce rami e tag che sei
probabilmente familiare con i tag non usati
abbastanza tanti rami di rif
i ref non sono generalmente usati da soli
sono un concetto di basso livello , quindi cos’è a
ref un ref è un puntatore a un oggetto e
è così è un modo di dire
associare un nome a un oggetto a un hash
la totalità di essa è molto simile a a
variabile e dico la JJVM
c’è un abile che ha un indirizzo
nella memoria non devi preoccuparti
l’indirizzo in memoria perché hai
dato un nome e tu usi quel nome
da quel momento in poi, che cos’è un ramo
beh, un ramo è solo un dipinto ref
a una divergenza dall’albero principale quindi a
l’oggetto ha una coppia di commit come genitore
ma non succede che non lo facciano tutti
mi manca lo stesso genitore, quindi posso
Dite bene a questo punto questo impegno sono io
andrò sul mio ramo personale di
controllo e ci limitiamo a dare tale oggetto la
i genitori di quel punto vogliamo divergere
da e poi possiamo solo aggiungere un rif
che chiameremo un ramo d’ora in poi
e che sarà l’useremo che a
traccia il nostro ramo che è praticamente tutto
questo è dove branching e tagging
e tutte queste cose sono molto molto veloci
in get perché non sono niente acqua
girovagando un paio di piccoli
puntatori nei file sarà effettivamente vi mostrerà
quello che sembra effettivamente in un po ‘e
qual è il tag che usi probabilmente tag I’m
probabilmente più comunemente usato per le versioni
per dire questo, vuoi tornare indietro?
e trova questa versione del controllo di rilascio
fuori questo tag e tornerai indietro
a quel punto nel tempo e di nuovo lo è
davvero molto semplice l’unico vero
la differenza con un ramo nel tag è
i tag per convenzione non cambiano
i rami delle filiali si muovono
avanti in fasce temporali
rimanere statici nel tempo è possibile firmare
tag se vuoi che sia super preciso
o super sicuro, ma in generale
e ci fidiamo solo delle persone a bussare
intorno al tag mateo non c’è motivo per cui
non potevi entrare in un repository git
e sovrascrivere un tag, ma non sei solo
andando a far fare a tutti gli amici così
diamo un’occhiata a questo di nuovo in pratica
termini che daremo un’occhiata dentro
il nostro repository git il nostro get semplice
repository qui quindi il primo comando sono io
facendo quassù ho intenzione di creare un
tag ha chiamato un tag e noi lo daremo
è un nome quando può cucinare un messaggio
andare con esso che è un modo normale di
fare cose leggermente diverse
saltare qualcosa qui un po ‘
un po ‘ma nel suo cuore è immobile
fondamentalmente la stessa idea è solo una
punto nel tempo che cosa fa un tag con a
il messaggio creerà effettivamente un mini
commit object ma non devi aggiungere
un messaggio in modo da poter creare un tag orso
quello che può fare è letteralmente solo un puntatore
per un oggetto un ramo è sicuramente giusto
un puntatore a un oggetto e se facciamo a
l’albero questo piccolo utile albero di comando
sulla sottostruttura get refs puoi vedere noi
abbiamo creato un sacco di file
stiamo creando un reggiseno un file chiamato a
ramo e noi chiamiamo creato un file sotto
i tag hanno chiamato un tag e se ho cat quel file
non può semplicemente distruggerlo, basta scaricarlo
sullo schermo quali sono i contenuti di
quel file è quello che è il
interezza di ciò che un ref è solo un
puntatore a un hash questo è ancora perché
la ramificazione è così veloce sotto get it is
scrivere letteralmente orfani penso che sia
128 lettere ad una qualunque sia il numero
lettere a cui è scritto
un file quindi succede più o meno
istantaneamente quindi è fondamentalmente il
al prossimo livello e di cui stiamo parlando
come lo manipoliamo giorno per giorno
base quante persone hanno qui
usato reset in gate sì quante persone
lo ha incasinato e ha spazzato via un pezzo del
ripple sì, è fondamentalmente un rito di
passaggio ho intenzione di mostrarvi come ottenere
fuori da quella situazione resettare duro è
fantastico questo è ciò che è resettato
puoi resettare le fratture in giro ora che puoi
fallo letteralmente se sei te stesso se
volevi semplicemente entrando in quello
ottenere la directory refs e oltre a scrivere quello
file ma avete scavare intorno divertente
se un hash alternativo e giusto
spingerlo lì, quindi c’è sempre
reset sta facendo ora sto sorvogliando
qualcosa che il ripristino del tizio ha è diverso
modalità e modificherà anche qualcosa
come la tua area di sosta e la tua
L’ albero di lavoro e duro è particolarmente
aggressivo spazzerà via qualsiasi cambiamento
che hai cose non impegnate come
che ma ancora suo nucleo sarà solo
spostare il rep il
ref ora così a questo punto come puoi vedere
in realtà non distrugge
qualsiasi dato che è effettivamente dentro il tuo
repository è giusto che tu lo faccia
conosci l’hash magico per tornare lì così
Ho resettato che ho resettato ho rovinato
come posso tornare a quello stato bene io
non lo so non ho idea di cosa sia il
precedenti guerre hash dovrò andare
scavando attorno al deposito con
forse decine di migliaia di oggetti che
ho bisogno di scoprire qual è stata la mia magia
oggetto dal passato o potremmo usare ref
registra ogni volta che modifichi tramite gate not
perché sono un minuto che manipola direttamente
file o altro ma ogni volta che lo fai
o effettuare un reset o altra manipolazione di
i riferimenti ottengono un record di esso in a
file di cronologia chiamato registro di rif
quindi se incasini tutto ciò che fai a
ribatte che fai un azzeramento della velocità e hai visto io
voglio tornare a quello stato precedente
quello stato di onore e annullamento è questo
se guardo qui è leggermente
ha commentato che devi sapere come leggere
un po ‘ma è abbastanza ovvio
se conosci la storia del tuo progetto
stesso ma quello che facciamo è che possiamo cercare
cos’è l’hash precedente, quindi siamo tornati
di nuovo hash così quando guardiamo andiamo
il nostro qui è dove abbiamo spostato la testa noi
voglio davvero tornare al precedente
versione non avrei dovuto farlo tu
lo so, sì, torneremo su quello
scusa come abbiamo risolto quello che stava facendo
dicendo altro allora
quindi viene inviato il log di registro che conserva una cronologia
ma lui continua per 90 giorni dal modo in cui la società
come avete visto quando si aggiunge le cose ad un
repository git
crea oggetti e tu stai aggiungendo
aggiungi aggiungi aggiungi aggiungi più versioni di a
aggiungendo un file a un repository che sei
creando un sacco di oggetti che abbiamo
mai effettivamente usato e questo si accumula
nel corso del tempo quindi come gestirlo
gentile è una specie di orfano inutile
oggetti intermedi davvero tipo di
rovinato o rivelare eeeh
quindi cosa aspettiamo perché ha qualcosa
chiamato GC, se sei in forma, pensi
a riguardo se fossi peggio con una JVM o
davvero qualsiasi tipo di orientato agli oggetti
linguaggio o davvero qualsiasi macchina virtuale
sistema in tutto ciò che ha l’idea di
raccolta dei rifiuti è la raccolta dei rifiuti
trova solo tutti gli oggetti che no
più hanno riferimenti validi a loro e
basta reclamarli o cancellare questo caso
li dal disco quindi cosa succede con
GC è in giro per trovare qualsiasi cosa
che non ha più riferimenti validi a
e li cancellerà comunque
conoscere i riferimenti finali tornare indietro
attraverso di loro scopri quali sono
penzoloni alla fine e lo faranno
cancellali ora non è troppo aggressivo
su questo in particolare non lo fa
cancella tutto finché non c’è almeno
due settimane però puoi scavalcare
che puoi impostarlo più a lungo che puoi vedere
il più corto o in questo caso usa la potatura
equals tutto sarà soffiare via nulla di così
questo è davvero il motivo per cui se si fa questo che
reset non andare in giro facendo G
GCS ggc aggressivo in seguito perché
stai distruggendo parte della tua storia
o era un modo per lanciare la tua abilità
recuperare ciò che è stato detto che non lo faresti
normalmente lo fanno generalmente
questo per te l’ altra cosa che
fa e siamo giù in oh quelli
reticenze anche parlare di questo perché
non è molto importante ma è gentile
di utile sapere o in o minimo
interessante sapere che non è solo
estirpare gli oggetti dall’albero in realtà
li comprime così che cosa fa
eversione originariamente o ben in realtà
ha sempre sempre memorizzato le differenze
tra i file nel tempo che sembrava
grande al momento, ma significava se tu
vuole tornare indietro e modificare effettivamente
qualsiasi cosa contenesse era virtualmente
impossibile perché dovevi fondamentalmente
ricrea l’intero repository git
non lo ha fatto ottenere mantiene ogni oggetto
tutto l’intermedio quindi in realtà
modificare la cronologia è molto semplice ma
è anche molto dispendioso, quindi cosa ha git
è Tsang chiamato file di pacchetto che facciamo un GC esso
codificherà temporaneamente tutti questi
sparsi gli oggetti scoprili
lavoro di storia
e conservalo in quali secoli a
disposizione temporanea di un file pack
quello è codificato e compresso delta e
quindi su questo è principalmente per salvare il disco
lo spazio, ma ancora più importante è molto
utile per il networking quando loro quando tu
fare in rete attraverso la rete
trasferimenti che non si desidera trasferire a
oggetto massiccio che vuoi trasferire solo
il minimo indispensabile solo per darti un
un’occhiata veloce a questo è quello che sembra
come facciamo un GC in tutti questi oggetti no
esiste più tempo
sono stati tutti impacchettati in tre
file uno che fa riferimento ai pacchetti
loro stessi che sono i dati reali
e un file di indice questo se hai muck
in giro con i database del disco sembra
un sacco di cose come questo sì, ma
generalmente hanno un file indice e sì
e i dati grezzi sono il file indice
alzò gli occhi e usò per trovare i dati
all’interno del file big blob si, sembra a
un po ‘di Berkeley DB o qualcosa del genere
sembrerà molto simile a te
veramente interessato a questo tipo di
cosa vai a dare un’occhiata dentro i cancelli
fonte che c’è un file nel
la documentazione spiega come il PAC
il file funziona se si tratta di una profonda magia nera
è ottimizzato per i dischi rotanti da colpire
la distanza il modo più ottimale
possibile guadagno questo è stato scritto da un ragazzo
chi fa sistemi operativi e file
sistemi è la magia nera profonda nessuno
sapevo davvero come funzionava a lungo
tempo prima che qualcuno lo colpisse
può ascoltare come diavolo è questo lavoro
e ha appena scaricato un mucchio di
informazioni e l’hanno appena copiato
un file e questa è una documentazione sotto
ottenere l’albero della documentazione interessante
roba se sei davvero nel tuo iper
ottimizzato database tipo di cose questo
è fondamentalmente un mini database ma quello è
quello sguardo a quel livello che abbiamo parlato
su un blob di basso livello abbiamo preso il
rami refs di livello superiore e
manipolandoli e come avvitare
te stesso manipolandolo abbiamo
un livello più alto ora la ramificazione è facile ma
i rami non sono molto utili a meno che tu
può portarli su qualcos’altro
a meno che tu non stia completamente sostituendo il tuo
intero repository puoi farlo ma
in genere vuoi ricomporti in
il flusso principale di sviluppo in alcuni
punto quindi sono oh quindi cos’è un’unione
una fusione naturalmente è solo unirsi a noi
la storia che ci siamo lasciati alle spalle
cosa abbiamo deciso che è ora di tornare
nel mainstream e il lismo emergono
si verifica è un po ‘più complesso perché
alcuni di questi cambiamenti che sono accaduti
tra i due rami potrebbe avere
spesso si sovrappongono , ma non è così
possibile così questo ancora questo guarderà
è emerso il suo commit di unione creato
quando riusciamo a unire questi due flussi di
lo sviluppo come sembra
ancora molto molto semplice è solo un
permesso con due genitori è per questo che tu
può aggirare i rami Brown di leting
dentro prendi e avrai ancora il
storia perché puoi sempre andartene
puoi tornare indietro attraverso un albero
spesso scendi quell’alternativa par-4
guarda cosa è successo e poi torna indietro
oppure puoi semplicemente seguire il main
Branch Hai può sorta di vederlo come una sorta
di un sentiero tortuoso che puoi guardare
di nuovo, ovviamente, non c’è
altrettanto semplice quanto quello di semplice come
dì semplicemente di dirlo, anche se a volte
è questa una fusione veloce avanti se
i tuoi due rami non hanno letto
sei divergente stai prendendo tu sei andato
conosci il master master che sto per fare
creare un ramo
oh sì, ho finito ora e no
ci si è impegnati a padroneggiare ancora perché
preoccuparsi anche facendo una fusione si impegnano
tutto quello che hai fatto è che non c’è niente
per unire non c’è nessun cambiamento
cambi e cancelli di default lo faranno
questo farà un rapido avanzamento unire il
problema c’è che non ti sei unito
impegnarsi qui non ha i due genitori
quindi stai perdendo la storia non più
avere che la consapevolezza che il ramo
mai avvenuto forse a cui non importa
forse non ti interessa
ad alcune persone piace un bel albero ordinato
personalmente mi piace mantenere il contesto se tu
sanno che lo hanno ramificato e forse quello
filiale aveva un nome di biglietto associato con
è un ID per un biglietto JIRA o o
qualunque cosa e poi emergere potresti essere
perdendo questa informazione personalmente io
piace tenerlo intorno così c’è un
emergere come comandante
un’opzione chiamata no FF no fast-forward
e creerà sempre un commit di unione
anche se non ne ha davvero bisogno
e questo è il punto in cui è un manichino
commettere che contiene i due genitori così
che tu sai che il ramo si è verificato
ma in generale questo non lo farà
capita che succeda se sei in aa
Team impegnato che è buono, con un sacco di cose
su o un ramo che dura più di a
pochi minuti da una squadra non banale
allora quello che sta per succedere è che lo sei
andando ad avere alcuni conflitti anche se
in realtà non sono in conflitto con i file
hanno cambiato in entrambi i lati abbiamo bisogno di
assicurati che non lo faranno
causare problemi c’è un numero di
unire le strategie che ottengono usi questo è
un enzima che salta per saltare
questo abbastanza rapidamente sfortunatamente è un
fondamentalmente parlare a se stesso è sufficiente per dire
ottenere l’uso di più strategie unite
sono collegabili che è bello quindi se
hai qualche modulo binario proprietario
formato che ovviamente non è possibile
Unisci formati di modulo binario se non lo fai
sai bene cosa sono ma se tu
personalmente so che il tuo formato binario
è davvero molto simile a un XML binario
e potresti eventualmente unire due modifiche
se non sono in conflitto, puoi farlo
scrivi la tua strategia di fusione per quello
ma quello che git usa di default è
è chiamato qualcosa di ricorsivo ricorsivo
interessante è stato ampiamente testato
su un albero del kernel di Linux che è probabilmente
circa quanto occupato un albero come stai andando
ottenere ed è molto intelligente quello che fa
cammina indietro attraverso l’albero e a ciascuno
punto di ramificazione crea un manichino
commit intermedio e quindi ricorsivo
si fa strada verso l’insieme delle modifiche
Direi che questo è un argomento abbastanza grande in
se sei interessato ad avere un
guarda che ci sono altri tipi di
unire quello che può accadere c’è la canzone chiamata
ore in cui si può essenzialmente solo
dimentica completamente la storia di a
master branch e sostituirlo con il
con un ramo completamente diverso molto
pur mantenendo il contesto non spesso
usato ma a volte è abbastanza utile come
Dico che mi piacerebbe parlare di più su questo
ma è un adattamento
massiccia soggetto in sé e per sé mi
consiglio di andare e di dare un’occhiata in giro
e alcune delle discussioni su come
opere in volta internamente ma basti
dite che il ricorsivo Murchison è stato
ampiamente testato sul kernel di Linux
così verrai da uno dei nostri vecchi amici
Quante persone qui hanno usato rebase a
un certo punto quante persone hanno fregato
fino a circa la metà sì di nuovo a destra
di passaggio quindi ora ne sappiamo un po ‘
sul grafico dell’oggetto di indovinare come è
tutto saggio insieme speriamo sconti
diventa un po ‘più evidente di cosa si tratta
andare su ciò che fa rebase è necessario
il punto di ramificazione che si è verificato con a
dove decidiamo di muoverci su un set a
traccia separata e dice solo che sono
sovrascriverò che cambio quello ma
perché è tutto un hash di cui abbiamo bisogno
ripeti ogni commit in cima al nuovo
punto dove stiamo andando a specie
rebind la storia questo è estremamente
potente perché tu se vuoi un pulito
albero questo è come lo fai perché da
questo punto su cui ora puoi fare un
l’unione veloce avanti se si desidera avere
completare una storia completamente piatto è
è anche estremamente potente perché a
ognuno di quei replay hai il
capacità di andare avanti non mi piace
messaggio di commit, lo cambierò
o mi piacerebbe prendere questi due
commette e li inserisce in uno solo perché
stiamo rivedendo e arriviamo a mietere
possiamo intervenire e cambiare la storia
ma tendiamo a fare qualcos’altro che siamo
barare ma è anche abbastanza potente
di per sé però per ragioni che mostrerò
tu
rebase è una di quelle cose che è
piuttosto facile da rovinare ma lo farai
anche trovare molto molto utile uno dei
le cose più potenti è l’idea di un
rebase interattivo per cui dici che sto andando
per ribattere sta andando a ripetere questo
prima di farlo , mostrami cosa sei
intenzione di fare e poi si può andare in e
Dite bene in realtà questi due commit
dovrebbe essere uno impegna o questi due
si impegna a essere un impegno e avere questo
messaggio o questo messaggio dovrebbe essere modificato
o distruggerò tutto
è un grosso impegno che è quello che
è non è un’opzione lo sconsiglio
Personalmente mi piace mantenere la storia ma
ad alcune persone piace un albero pulito come dico
c’è molto di più di cui parlare qui
ma questo è
davvero il al centro del modello che si ottiene
hai i tuoi oggetti hai i tuoi riferimenti
che puoi costruire rami larghi e
tag e qualsiasi altra cosa desideri sopra
di quello e poi hai leggermente
più alto di quello che hai l’idea di
Unisci dove devi andare
risolvere i cambiamenti tra diversi
rami a un certo punto e tu vuoi
mantieni la cronologia in modo che tu possa averne
metadati nei commit che ti permettono
per memorizzare da dove provengono gli oggetti
dove un pezzo di storia è venuto da come
sei arrivato lì ed è per questo che la fusione funziona
molto meglio di dire sovversione
la sovversione non ha una sua storia
nel suo repository git sa
da dove arriva da dove viene
quindi sa come uscire
difficoltà a parlare di uscire
guai hai visto questo annuncio qui?
questo è per il pari nel Regno Unito
originale Prince of Persia o loro il
nuovo uno le sabbie del tempo era un annuncio I
penso che non ero io in Australia, non va bene
comunque vuoi uscire dai guai
tutti hanno rovinato lì ottenere
repository in generale come dico io
è un rito di passaggio per il nuovo ottenere
gente come oh sì, so cosa sta succedendo
su qui vai a reset o sto per rebase
ins oh merda quindi ecco il nostro preferito
resettare duramente tutti hanno fatto di no
la metà delle persone ha detto no che non l’ho fregato
probabilmente stavi mentendo abbiamo tutti
fatto così è resettato difficile distruggere è
praticamente tutto ciò che muove il riff
di nuovo ad un certo punto forse da qualche parte
completamente altro perché è possibile
essenzialmente iperspazio attraverso il
alberi o da qualche altra parte e lo farà
faranno saltare via qualsiasi cambiamento di scena
farà esplodere in cui si sta lavorando è l’albero
è stato molto utile io uso resettato molto duro
quando sono andato come un hacker
Mi sono reinserito in un caos duro
il mio mi riporta subito a te
conosci la testa in uno stato pulito , ma lo faresti
essere via quando lo fate sarete
spazzare via un sacco di dati potenziali ora
Non posso aiutarti con il lavoro, il lavoro
il cambiamento di lavoro effettivo cambia I
non posso aiutarti con il in ogni lavoro
stagisti nell’albero di lavoro, ma non ha
è stato aggiunto per ottenere non può aiutarti con
quella
ma tutto ciò che viene a conoscenza di
possiamo tornare a così chiunque vuole
prova a indovinare come saremmo usciti
questa situazione sapendo quello che sappiamo ora
lì sì puoi usarli anche tu
ci sono le idee nuove su nuove
bambini dove abbiamo parlato del registro riff
così, quando abbiamo fatto il reset , lo faremmo
sono stato un record di ciò che possiamo
scoprire dove eravamo prima così noi
vai come merci al registro dei riff
scopri dove si trovava questo particolare riff
puntando in precedenza e vai bene ora
sappiamo che vogliamo tornare al nostro impegno
non loro questo sai che muoverti?
dal modo in cui queste sono piccole frecce
c’è un mini tutto intero
lingua e ottenere come riferimento
refs quindi puoi dire come ref – uno lì
– Salire di nuovo due posizioni indietro nel
albero qualunque sia abbastanza complesso
già usarlo molto me stesso è
davvero troppo per ricordare la maggior parte del
tempo è facile guardare attraverso il
Lord registra e scopre di sapere dove
vuoi arrivare a quell’aumento di quota
significa che il team precedente impegnarsi per la
uno che sto guardando attualmente , quindi lo sappiamo
il chiodo di hash così possiamo trovarci qui e
andiamo abbastanza bene
ci permette di usare la stessa cosa che ha ottenuto questo
istituire guai per farci ottenere ottenere
Hard Reset spinge subito indietro a
dove era ora sapete sei fuori
guai di nuovo
spero che giallo un grande io sono carina
sicuramente ognuno di noi è stato rebasato
visto tutto questo si riferisce al non banale
ree-ree base hai fatto un rebase e
hai rotto la build e tu no
so bene perché da qualche parte in questo
albero c’era una sorta di conflitto
errore non e non abbastanza conflittuale a
causa un errore di unione ma in conflitto
abbastanza per essere un fallimento logico molto
peggio di un fallimento fallisce la maggior parte dei fallimenti
sono semplici problemi logici che noi
recentemente settimane la tua vita in modo che cosa abbiamo
fare su questo ora questo in realtà può
applicare a un paio di cose, tra cui
si fonde ma rebase è a
particolarmente buono mi piace questo
perché
è un punto in un ramo di lunga data
ora stavo costantemente ribattendo e ogni
tempo si romperebbe in qualche modo forma o
forma e ho dovuto andare e scoprire così come
Non possiamo farlo ora ho abbastanza
ha trattato questo in dettaglio ma non l’ho fatto
menzionalo quando fai una base RiRi e
ti replay hai effettivamente l’abilità
interporsi in ogni punto e cambiare
la storia o potresti iniettarla
quel punto non cambia la storia ma per
istanza convalida quello che è appena successo
in qualche modo forma o forma come quelli
completare un test al cento per cento
coperture che tutti avete naturalmente
Ho certamente ottenuto il cento per cento
copertura del test come potresti aver provato
tutto così abbiamo la capacità di non farlo
disfare le cose
quindi annulliamo la prima cosa che siamo
andando a fare reset si usa il log RIF a
resettare questo ora possiamo effettivamente mettere un nuovo
canzone chiamata rebase exec rebase exec a
ogni passo lungo la base RiRi eseguirà a
comando per te nel nostro caso il nostro totalmente
incredibile suite di test completa al 100%
corri in ogni punto che sei del RiRi
base e fallirà la prima volta a
prova fallita in modo da poter scoprire molto
rapidamente perché rimanderai il fallimento e tu
può decidere di sistemare in quel
point get letteralmente si fermerà a
quel punto e vai vuoi sistemare
vuoi interrompere questa base si RiRi
ti dà un sacco di opzioni che hai
la capacità di andare posso decidere come
risolvere questo problema in modo da poter vedere che cosa sarà
ci siamo fermati a metà della base RiRi
qui perché i nostri test sono falliti perché io
non ha fatto fare test ora effettuare test
potrebbe essere qualsiasi cosa può essere test MVN IT
potrebbe essere MV un test int quale è il nostro
test particolarmente estremo che
letteralmente eseguito Postgres e pieno
server Tomcat e intere opere e congelato
un sacco di test dipende da come tu
sai che la tua situazione è solo te
avere questa opzione si fa la base RiRi
e puoi dire di controllare ogni passaggio
lungo la strada strumento molto molto utile che
se ti trovi in questa situazione
in particolare i tuoi test sono veloci, fai questo
ogni volta ti risparmia un sacco di
coppia giù la linea, ma non lo è
sempre possibile tornare indietro e cambiare
storia a volte vuoi sistemarti
posto come ti senti qui sapere
git bisect manciata bene oggi uno dei
modi classici per risolvere questo problema
perché tu possiamo farti saltare
in giro nella storia e quando ti rendi conto
che vai ah, che cosa può tornare indietro?
attraverso l’albero ed esegui il test ciascuno
tempo e capire quale era sbagliato
e posso sistemarlo dopo che abbiamo noi
ristretto su quale punto che commettono
si è rotto ed è valido per rebase
può essere applicato alle unioni a cui potrebbe essere applicato
solo un albero piatto completo dove sei
apportare modifiche ti rendi conto in seguito
qualche settimana dopo hai sentito di averlo avuto
rotto qualcosa da qualche parte ma tu no
so bene dove usano molto dentro
non c’è davvero albero di Linux ma cosa
lo fa va in fondo il ghiaccio portellone
ok, inizierà una bisettrice
qui andremo a scegliere questo punto
anche se capita di sapere che è rotto
Sceglierò questo punto che accadrà
sapere che stava funzionando riattraversare
quella storia che ti esegue questo comando
non può mai farlo Matt fallo manualmente
può saltare e fare un po ‘di set
di test manuali e poi dire che era
contrassegnare come buono o cattivo o si può solo
prendilo per eseguire un comando e funzionerà
quelle prove tornerà indietro ma è così
lo fa in modo intelligente
il modo in cui lo fai se tu te se lo fossi
quattro anni mi faranno come posso fare
più velocemente sceglierà un punto da qualche parte
tra il bene e il male fai a
prova se è male andrà più indietro
in tempo se è buono salterà in avanti
nel tempo e lo automatizzerà
processo di scoprire cosa esattamente
successo ora ho appena realizzato che penso di esserlo
correre severamente nel tempo è così
Sono convinto che stiamo parlando per quasi un
ora ora ora in modo che nessuno viene a
il grido mi ha urlato, va bene
ma comunque sono alla fine come puoi
dire che è molto di più può essere facendo qui
ci sono molti e molti esempi
posso dare ma spero di non aver bisogno di farlo
con questa conoscenza di base hai il tuo
oggetti e i tuoi commit e i tuoi alberi
hai i tuoi riferimenti puoi muoverti
e tu puoi manipolarlo direttamente io
significa se sei davvero eccitato che puoi
salta soffiandola più in basso e puoi farlo
catena questi si impegna insieme e loro
hai più genitori genitori e puoi farlo
Unire i punti nella storia divisi
storia ma in realtà è solo tutto
gli oggetti sono indicati da alberi che sono
indicato da commit che sono puntati
per riferimenti e una volta che lo sai
così tante cose cadono una volta
capisci quel modello tutto
altro è costruito sopra a tutto questo
le idee complesse sono solo a strati
in cima a quello e puoi lavorare dal primo
principi e se hai una domanda
puoi andare a lavorare su di esso cosa
successo bene se stavo scrivendo resettarlo
Stavo scrivendo rebase come avrei implementato
va tutto bene in quel caso che posso
probabilmente questo diventa un sacco di cose
ovvio quindi ora abbiamo tutto questo extra
la conoscenza ora spero che tu possa lavorare
attraverso i primi principi per
eventuali problemi che hai in git e, si spera
lo capisci e usa git in a in a
modo diverso dall’altro se
ti senti davvero avvistato
ci sono molti comandi di basso livello a
manipolare ottenere gli alberi direttamente così com’è
torna ai tuoi alberi di produzione e
inizia a fare hacking sui tuoi ref e
forse guardare file e oggetti hash e
tutti questi modi divertenti che puoi direttamente
manipolare un albero se ci fosse dentro
una storia davvero divertente su come Linux
il kernel ha completamente fatto esplodere bitbucket
tempo a causa di qualche magia oscura
la gente ha fatto con le chiavi pubbliche ma si sente
libero di andare fuori e imparare di più
e capirlo di più ma e usarlo
in un modo più potente è solo un
grafico aciclico ma è anche solo un mucchio
di oggetto e puoi manipolarli dentro
qualsiasi programmatore può pasticciare
Presto
– sai che potresti fare il lavoro per un altro
potente o se sei davvero eccitato
avvistato Goff e l’attrezzo si ottiene
effettivamente implementare il nucleo di ottenere
un pomeriggio ora non si può fare un sacco di
cose avanzate non puoi fare il pacchetto
i file non puoi farlo se non lo facciamo
Rete, ma in pratica si potrebbe scrivere a
programma che effettivamente attraverserà
ottenere l’albero e dirti cosa c’è dentro
e la tua relazione è molto semplice
molto potente se sai come funziona
quindi spero che non sia stato utile
rompi questo sull’app se tu se tu
sarebbe e spero che questo vi aiuterà
con il tuo ovviamente il rilascio di
tutto indipendente locale
Non ho un massiccio enorme
queste quantità hanno visto l’ uomo più grande
Vorrei che fossero rilasciati separatamente e
loro parlano friggitrice una API ben definita e
può essere rilasciato separatamente e può
operare in modo indipendente o hanno
dipendenze implicite o esplicite su
l’un l’altro sulle loro versioni in cui
caso non sono davvero pezzi separati
di software se sto usando Amazon Web
Servizi Non ho bisogno che Amazon
aggiornare i loro servizi allo stesso tempo
che aggiorno il mio sistema che parla
ad esso però se lo faccio allora lo sono davvero
parte del server di ricerca web di Amazon Web
che servizi abbiamo passato attraverso questo
è spesso uno di quei cicli di
software in cui si separano le cose
e poi finalmente hai implicito
dipendenze e tu li ricongiungi a noi
ricongiungendo un po ‘di roba nostra quando noi
scoperto che la loro API non lo era
davvero come indipendenza prima di loro
o in alcuni casi abbiamo avuto un sacco di
moduli che volevamo davvero refactoring
in una diversa struttura di
moduli in tal caso ci piacerebbe ricongiungerci
il centro commerciale per ottenere tutti nello stesso
il deposito Ori ha trattato un singolo pezzo di
software su un solo piede la versione
per ogni versione e poi solo quando
sono completamente separati da API
quindi dividerli di nuovo
papà ha detto di dividere qualcosa quando tu
metterlo nello stesso repository è
eccessivamente difficile perché una volta il
possibilità di creare un accoppiamento stretto
succede che accadrà è solo umano
natura se so che quel pezzo di
il software laggiù ha una connessione attiva
oggetto del tatto o del cliente, sto per finire
piuttosto che usare quell’oggetto cliente
di scrivere il mio e di avere un mucchio
di voi conoscete gli oggetti di trasferimento dati
Prenderò scorciatoie è il
la realtà così io ho molto forte
Api molto separate è tutto ciò che hai
la consapevolezza che sono tutti parte
dello stesso progetto e potrebbe essere necessario
aggiornato in linea di massima non è dritto
è che non è semplice uno dei
cose che Amazon ha fatto in particolare
quando il motivo per cui Amazon Web Services
esiste perché è famoso che è venuto
giù dalla cima tutto ciò che esporrà
da solo tramite API REST ci sarà no
dipendenze incrociate tra le nostre diverse
strumenti e il nostro sistema di archiviazione contro il nostro
Computing System e far rispettare che
molto difficile e da quello che sono stati in grado
per trasformarlo in un prodotto perché loro
sono stati costretti a operare come clienti per
l’un l’altro ovunque tu abbia due
persone che possono colludere insieme sei
andando a ottenere questo tipo di sanguinamento di
le dipendenze dei box così dovevano avere
forte separazione c’era un buon cappotto
da Peter sito Seibel su Twitter il
l’altro giorno ha guidato la pratica comune
Lisp anche se non in Common Lisp
leggere il libro è uno dei migliori
tecnico
introduzioni a una lingua o sempre letti
ma ha detto che questa è la legge di Conway
il 21 ° secolo per il cloud set
secolo qualsiasi geograficamente distribuito
la squadra parlerà a questa orribile conversazione
tramite un’interfaccia RPC quindi il mio colore a quello
era se si desidera creare interfacce RPC
separare fisicamente la tua squadra, se tu
vogliono che i micro servizi facciano funzionare tutti
da casa quindi è davvero tanto tempo
la risposta lunga è più che abile
occuparsi di grandi progetti strutturati
è che è usato sul più grande software
progetto nel mondo in questo momento il
tempo per dividere o unire diversi
i moduli dipendono interamente da quanto forte
i tuoi animali domestici si impegnano in una API stabile Oh over
tempo e quanto puoi fermare le persone
dall’assumere che sappiano cos’è
andando avanti sotto il cofano di diversi
i moduli anche se hai un’API forte
se li segnali implicitamente a seconda
sono certi comportamenti, se cambi
quella
sì , si romperà anche capi rimane il
lo stesso Microsoft Windows è un famoso
esempio di questo hanno dovuto mantenere tutto il
vecchi bug e stranezze nel tempo perché
qualsiasi correzione di un bug si romperebbe
qualcosa per qualcuno per qualcuno
chi non era un bug era una caratteristica
quindi è praticamente così che è così
il lungo sconclusionato risponde alla domanda I
spero che aiuti
tutte le altre domande rapide non re re
rebase è quando useresti rebase
contro l’omicidio mi dispiace sì
va bene così il voto rebus contro fusione
generalmente si fondono, a meno che tu non abbia
alcuni pressanti motivi reali ora alcuni
i posti preferiranno un rebase degli alberi pulito
ti darà un albero pulito che è rebase
anche la capacità di Felicity di sistemare a
ramo ti dà la possibilità di andare
guarda ho creato un sacco di quiz
I’ll go commit a Oh fix the commit a fix
il comune per ultimo commette whoops che ho dimenticato
questo lontano blah blah ognuno di quelli
il commit intermedio è rotto e cosa
idealmente quello che ti piacerebbe è avere ciascuno
impegnarsi per essere un completo autosufficiente
modificare
atomico ma discreto, ti dà quindi rebase
la capacità di farlo come parte del tuo
ribadendo è possibile modificare la cronologia ora
beh, penso che sia interessante riguardo a rebase
in realtà non devi dargli un
diverso hash che puoi effettivamente dire
voglio rebase sul posto che sono
già indicando da ma cosa ma in
facendolo, per favore lasciami intervenire e
cambia la cronologia così questa è strana
trucchi
rebase può riavviarsi su qualsiasi cosa
incluso su se stesso, quindi puoi
in realtà vai a leggere rebase che cos’è rebase
è davvero dovrebbe essere davvero volontà
sii un nome migliore per cui ripeti questo
storia
Voglio che la storia inizi da qualche parte
altro o un sacco di storia non portare avanti
a partire da qui, ma io voglio davvero
modificare quella cronologia in ogni punto in modo tale
parlando in generale
preferiamo non fondere nessuna rebase veloce
quando hai bisogno di cambiare la cronologia o
hai davvero hai diverguto finora
che in realtà l’unico modo per farlo è farlo
è quello di rileggere di base in realtà non
capita molto spesso e in generale
avrai una rottura a quel punto
L’ho fatto ma puoi anche unirmi
la storia torna nel tuo albero ma quello
spesso finirà per essere piuttosto disordinato
albero che vuoi mantenere il tuo albero in modo equo
Base riri pulito, ma senza esagerare e
anche tu devi tenere a mente se il tuo se
il tuo rifondare un ramo e poi spingere
in su si sta andando a distruggere il marchio
per chiunque altro lo stia usando
stai riscrivendo la storia quando tirano
in basso sta per cambiare
la loro storia è per questo che tu questo noi
avere questa idea di forza spinge se tu
spingere qualcosa ed è completamente
cambiato di storia, la Riserva lo farà
rifiutalo a meno che tu non dica la forza che è
perché il tuo hash è la testa ha
cambiato completamente aggiungere ora è ora
completamente diverso dalla storia se
qualcun altro stava usando quella storia e
loro vanno e tirano tutto diventa
il caos molto molto velocemente, infatti, c’è
qualcosa chiamato forza con Leafs
via ho scritto un articolo su questo alcuni
mesi fa se sei interessato alla forza di
contratto di locazione quando si spinge e si fa una forza
puoi fare una forza di locazione e cosa
quello è controlli se qualcun altro ha
stato usando quel ramo pure e oh
e poi si rifiuterà di fare la forza
anche se hai detto che il rilascio forzato lo farà
quindi non più sovrascriverlo perché
qualcun altro ha lavorato su questo
ramo pure non è perfetto ma è così
aiuta ma nessuna risposta breve da latte è
di preferenza si fondono la fusione n
riri base veloce per la pulizia
solo a meno che davvero davvero
lavorando in modo molto indipendente e
voglio davvero aggiustare le cose al
momento in cui stai condividendo un ramo tu
non dovrebbe mai ribattere che è una regola d’oro
su un kernel lynx per esempio il momento
hai fatto un rebase o tutti ne hanno spinti
si ramifica una sorta di rebase
non può accadere ree basi sono solo locali
operazione puoi trattarli come un
operazione per spingere su un albero ma se
fai così che stai potenzialmente calpestando
il lavoro di qualcun altro, quindi è ancora così
la versione lunga del verbo ringrazia molto
cazzo
tu
Please follow and like us: