2010-07-27 23 views
32

Sto cercando di ottenere una comprensione più approfondita di git.Che cosa significa in realtà l'output di git pull?

Qualcuno può darmi una semplice spiegazione riga per riga di cosa significa git di base pull? Esempio:

remote: Counting objects: 11, done. 
remote: Compressing objects: 100% (5/5), done. 
remote: Total 7 (delta 2), reused 0 (delta 0) 
Unpacking objects: 100% (7/7), done. 
From ssh://my.remote.host.com/~/git/myproject 
* branch   master  -> FETCH_HEAD 
Updating 9d447d2..f74fb21 
Fast forward 
app/controllers/myproject_controller.rb | 13 +++++++++++++ 
1 files changed, 13 insertions(+), 0 deletions(-) 

risposta

51

Sotto il cofano, git pull è git fetch seguito da git merge. Ecco la porzione di recupero:

remote: Counting objects: 11, done. 
remote: Compressing objects: 100% (5/5), done. 
remote: Total 7 (delta 2), reused 0 (delta 0) 

A questo punto, hai detto al telecomando cosa vuoi. Trova tutti gli oggetti che ha bisogno di darti (contarli nel processo, credo), li comprime per un trasferimento più veloce sulla rete, e poi riporta cosa ti sta mandando. Gli oggetti possono essere blob, alberi, commit o tag, ad esempio lo git book per ulteriori informazioni.

Unpacking objects: 100% (7/7), done. 

Si riceve il pacchetto (set di oggetti compressi) e decomprimerlo.

From ssh://my.remote.host.com/~/git/myproject 
* branch   master  -> FETCH_HEAD 

È stato prelevato il ramo "master" dal telecomando specificato; il riferimento FETCH_HEAD ora lo indica. Ora passiamo all'unione: precisamente, git unirà FETCH_HEAD (il ramo principale del telecomando) nel ramo corrente (presumibilmente il master).

Updating 9d447d2..f74fb21 
Fast forward 

Si scopre che non si è discostato dal ramo master del telecomando, quindi l'unione è un fast-forward (una fusione banale in cui semplicemente si muove in avanti nella storia). Git rileva la posizione originale del ramo principale (9d447d2) e la nuova posizione (f74fb21) a cui è stato inoltrato rapidamente. Se ti fossi allontanato dal ramo principale del telecomando, vedresti l'output di un'unione ricorsiva qui - Merge made by recursive, possibilmente con alcuni Auto-merged <file> e (oh no!) Conflitti di unione!

app/controllers/myproject_controller.rb | 13 +++++++++++++ 
1 files changed, 13 insertions(+), 0 deletions(-) 

Infine, mostra il diffstat tra la posizione originale e post-fusione del ramo principale; questo è fondamentalmente ciò che otterresti da git diff --stat [email protected]{1} master.

+0

+1 "Si scopre che non ci si è allontanati dal ramo principale del telecomando" - si intende che non è stato creato alcun nuovo ramo? Inoltre cosa significa ++ o - significa –

+1

@Pangea e altri che potrebbero chiedersi in futuro: No, non significa che non è stato creato alcun nuovo ramo, significa semplicemente che non hai commesso contemporaneamente modifiche che non erano ancora incluso nel ramo remoto. In questo caso, non c'è nulla da unire, basta aggiungere i nuovi commit in cima al tuo branch locale e sia il tuo branch locale che il ramo remoto saranno identici. Il ++ e - sono semplicemente rappresentazioni "grafiche" della quantità di cambiamenti in ogni file (+ le inserzioni e le cancellazioni) e quindi indicano approssimativamente dove sono andate la maggior parte delle modifiche. – tne

Problemi correlati