/ / git workflow e unendo le modifiche dal master alle filiali: git, merge, branch, rebase

git workflow e fusione delle modifiche dal master alle filiali: git, merge, branch, rebase

Avendo lottato con SVN mi è stato detto che dovevocontrolla GIT, in quanto i rami sarebbero l'ideale per il flusso di lavoro che sto cercando di raggiungere. Mi sono confuso e penso di avere le basi del GIT in ordine ora.

Abbiamo fondamentalmente un quadro centrale che alcunidei nostri clienti usano, e voglio avere un trunk / master e usare i branch normalmente, per sviluppatori / sviluppatori, ma vorrei anche creare branch per ogni client, così posso lavorare sulle modifiche specifiche del client al codice . Questi rami sarebbero sempre un ramo e non finiranno mai per essere riuniti nel tronco / master.

La cosa principale che sto cercando di ottenere è che posso facilmente unire tutte le modifiche DAL trunk / master alle varie filiali del client e mi confondo se devo unirmi, o rebase.

Quindi la mia domanda ... Dovrei sempre usare rebase per questo, e se sì perché? (perché voglio mantenere il singolo commit in ogni ramo?)

modificare Così creo un repo, e in quel repository ho detto file.php con $x = 1

  • Lo impegno a maestro
  • Creo un ramo chiamato client1
  • In client1 Aggiungo un nuovo file e commetto
  • In client1 Io cambio file.php così $x = 2

git log pre-unione

  • In maestro Apporto una modifica a file.php ma è una nuova riga e $ x rimane $x = 1
  • In client1 Mi unisco maestro e ottenere un conflitto $x

È perché sto aggiungendo una nuova riga a file.php adiacente a $x che sta causando il conflitto?

risposte:

2 per risposta № 1

Dovresti unire. Il rebasing prenderà tutte le modifiche sul master dato che il ramo si è separato dal master e ricreare loro in cima al ramo. Ciò significa che ogni commit sul master verrà duplicato per ogni ramo del cliente che stai monitorando.

L'unione è semanticamente ciò che stai facendo. Il grafico di commit risultante apparirà molto più bello e Git avrà un tempo più semplice per eseguire le fusioni poiché, dopo ogni unione, la cronologia del master diventerà parte della storia del ramo stesso - Git dovrà solo considerare i commit sul master dall'ultima fusione, invece di riconsiderare ogni commit su master.