/ / Mantenere aggiornato un ramo con master - git, git-branch, git-merge

Mantenere un ramo aggiornato con master - git, git-branch, git-merge

Ho un repository remoto che ho estratto esto ramificando da. Voglio mantenere aggiornato il nuovo ramo con le modifiche apportate al master. Sto pensando al flusso di lavoro qui sotto, ha senso o ci sono modi migliori per farlo?

  1. Branching iniziale e checkout:

    git checkout master
    
    git pull
    
    git checkout -b my_branch
    
  2. Fai un po 'di lavoro my_branch, quindi periodicamente:

    git checkout master
    
    git pull
    
    git checkout my_branch
    
    git merge master --no-ff
    

Ripetere il passaggio 2 in base alle necessità, con spinte periodiche sul telecomando my_branch.

Quindi, quando sei pronto per una fusione indietro:

git checkout master

git merge my_branch --no-ff

Va bene?

risposte:

17 per risposta № 1

Puoi semplificare i tuoi comandi:

1.

git fetch
git checkout -b my_branch origin/master

2.

git fetch
git merge origin/master

git fetch aggiorna i rami remoti, di solito non è necessario disporre di una copia locale di un ramo quando non si prevede di lavorare su questo ramo.

Puoi omettere il --no-ff dopo l'impostazione git config --global merge.ff false.

git help config dice:

   merge.ff
By default, Git does not create an extra merge commit when merging
a commit that is a descendant of the current commit. Instead, the
tip of the current branch is fast-forwarded. When set to false,
this variable tells Git to create an extra merge commit in such a
case (equivalent to giving the --no-ff option from the command
line). When set to only, only such fast-forward merges are allowed
(equivalent to giving the --ff-only option from the command line).

Fai attenzione a git pull è solo una combinazione di git fetch e git merge.

Di solito vuoi solo git pull --rebase che è essenzialmente git fetch più git rebasee crea una storia molto più pulita.

C'è qualche motivo per le tue "spinte periodiche"? Se nessun altro sta lavorando sullo stesso ramo sarebbe perfettamente bene, solo per spingere dopo aver finito tutto.


10 per risposta № 2

Consiglierei di usare un flusso di lavoro rebase. Quindi invece di usare git pull dovresti usare git pull --rebase.

Farei lo stesso con il ramo delle caratteristiche. Quindi invece di fare un git merge master --no-ff Vorrei usare a git rebase master. Tuttavia, se il ramo della funzione deve essere condiviso con i colleghi durante lo sviluppo, allora è meglio unire periodicamente la filiale principale nel ramo della funzione.

Ma ad essere sincero, lavoro in una piccola squadra e sedobbiamo lavorare insieme su un ramo di funzionalità e dobbiamo aggiornarlo con il master, quindi sospendiamo il nostro lavoro per un breve momento (e comunichiamo chiaramente il processo), riforme sul master e forziamo il push del ramo di funzionalità. Ma sì, ciò non si adatta a team più grandi. Tuttavia, trovo molto più conveniente lavorare con un ramo delle caratteristiche che viene ridisegnato sul master invece di dover gestire le fusioni dal master.

Assicurati di leggere questo.

Git workflow e rebase contro unire le domande