Un'altra domanda detta git pullè come un git fetch+ git merge.
Ma qual è la differenza tra git pullVS git fetch+ git rebase?
Un'altra domanda detta git pullè come un git fetch+ git merge.
Ma qual è la differenza tra git pullVS git fetch+ git rebase?
Risposte:
Dovrebbe essere abbastanza ovvio dalla tua domanda che in realtà stai solo chiedendo della differenza tra git mergee git rebase.
Quindi supponiamo che tu sia nel caso comune: hai fatto un po 'di lavoro sul tuo ramo principale e tiri fuori da quello di origine, che ha anche fatto un po' di lavoro. Dopo il recupero, le cose sembrano così:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
Se ti unisci a questo punto (il comportamento predefinito di git pull), supponendo che non ci siano conflitti, finisci con questo:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
Se d'altra parte hai fatto il rebase appropriato, finiresti con questo:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
Il contenuto del tuo albero di lavoro dovrebbe finire lo stesso in entrambi i casi; hai appena creato una storia diversa che porta ad essa . Il rebase riscrive la tua storia, facendola sembrare come se ti fossi impegnata in cima al nuovo ramo principale di origine ( R), invece che nel punto in cui avevi commesso ( H). Non dovresti mai usare l'approccio rebase se qualcun altro ha già estratto dal tuo ramo principale.
Infine, tieni presente che puoi effettivamente impostare git pullun determinato ramo per usare rebase invece di unire impostando il parametro config branch.<name>.rebasesu true. Puoi anche farlo per un singolo pull usando git pull --rebase.
git pullè come correre git fetchallora git merge
git pull --rebaseè come git fetchalloragit rebase
git pullè come un git fetch+ git merge.
"Nella sua modalità predefinita, git pull è una scorciatoia
git fetchseguita dagit mergeFETCH_HEAD" Più precisamente,git pullviene eseguitogit fetchcon i parametri indicati e quindi chiamagit mergeper unire le teste di ramo recuperate nel ramo corrente "
(Rif: https://git-scm.com/docs/git-pull )
'Ma qual è la differenza tra git pullVS git fetch+ git rebase'
Ancora una volta, dalla stessa fonte:
git pull --rebase
"Con --rebase, esegue git rebase invece di git merge."
'la differenza tra mergee rebase'
anche qui viene fornita una risposta:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(la differenza tra l'alterazione del modo in cui viene registrata la cronologia delle versioni)
git fetch + git rebasefunzionano i comandi da ora. Non ci sono più o meno conflitti sul nostro git tree da ora :)