2013-06-27 24 views
15

In assenza di repository remoto, un solo repository locale con due rami.Differenza tra tirare Git. master vs git merge master

$ git branch -a 
    master 
* devel 

stanno seguendo i comandi in questo contesto stesso/sinonimo?

$ git pull . master 

e

$ git merge master 

UPDATE:

$ git help pull dà seguenti informazioni

SYNOPSIS 
    git pull <options> <repository> <refspec>... 

DESCRIPTION 
    ... 
    Note that you can use . (current directory) as the <repository> to pull 
    from the local repository — this is useful when merging local branches 
    into the current branch. 

Io in realtà non capisco perché questo è utile, come indicato in questa pagina di manuale.

+1

no git-merge - Unisci due o più storie di sviluppo insieme. E git-pull - Recupera e fonde con un altro repository o un ramo locale – cptnk

risposta

8

git pull . master recupera dal repository corrente (no-op) e sarà poi fare qualcosa per portare il ramo corrente al passo con master. Che qualcosa potrebbe essere un'unione ma potrebbe anche essere un rebase a seconda dell'impostazione di configurazione pull.rebase o branch.master.rebase.

In caso di unione, la strategia di unione è interessata da pull.twohead.

git merge master unirà sempre master con la strategia di unione predefinita.

11

pull è un comando di combinazione, fetch seguito da merge. Con parametri predefiniti o sensibili, sincronizzerà il ramo corrente.

Con i params come in questione gran parte del suo lavoro è sabotato. la parte di recupero viene sovrascritta per utilizzare il repository corrente, quindi viene saltata e si chiede esplicitamente la sovrascrittura del master FETCH_HEAD.

Quindi in quella forma credo che siano identici (e metterei anche la prima categoria senza senso).

+0

Sarà lo stesso in entrambi i casi poiché il telecomando è ".", No? – jszakmeister

+0

come ho sottolineato non esiste un repository remoto. quindi 'fetch' non sta facendo nulla. Puoi aggiustare la tua risposta; Sono felice di aver detto che solitamente git pull è equivalente a git fetch & git merge. – Hotschke

2

l'unica differenza - nel secondo caso (git merge master) si unirà con non dati freschi, ma con i dati dell'ultimo aggiornamento remoto. Quindi, se hai appena fatto fetch (o git remote update) - funzionano allo stesso modo, ma se hai aggiornato il repository locale molto tempo fa - si fonderà con la vecchia istantanea.

Non sono sicuro del periodo in git pull . master è una corretta sintassi ...

+0

mi ha lasciato sconcertato, ma sembra funzionare saltando la parte del recupero –

Problemi correlati