2013-08-23 4 views
16

consente di dire che ho creato una nuova funzione con git flow feature start FEATURENAMEPerché la traccia "git flow feature pull" non viene eseguita?

poi pubblicato con git flow feature publish FEATURENAME

Ora il mio collega vuole collaborare a questa funzione con me, così lo fa

git flow feature pull FEATURENAME

Questo crea un nuovo ramo sul suo repository locale, basato sul ramo di funzionalità nel repository remoto. Tuttavia, questo non imposta il suo ramo di funzionalità locale per tracciare il ramo di funzionalità remoto, quindi ora deve tracciare manualmente questo ramo.

Qual è il ragionamento alla base di questo passaggio aggiuntivo? Perché il comando feature pull non è impostato anche per tracciare?

Qual è la differenza del flusso di lavoro tra git flow feature pull e git flow feature track.

In quali casi useresti ciascuno di questi?

+0

Diventa ancora più confuso se il tuo collega fa un '' 'git pull''' prima di' '' feature pull'''. – dashesy

+0

Voglio usare '' 'git-flow''', ma devo anche ordinare come fare la parte * feature collaboration *, quindi imposterò una taglia per questo, si spera di ottenere un'idea migliore. – dashesy

risposta

14

Sembra che si stia utilizzando git flow feature pull, dove si dovrebbe usare git flow feature track, poiché ciò crea un ramo locale che tiene traccia del telecomando.

Non riesco davvero a pensare al motivo per cui avrei mai usato git flow feature pull. Crea un ramo locale senza tracciamento impostato su di esso, e non so perché sarebbe utile! È anche mal chiamato, dal momento che un tiro dovrebbe comportare una fusione, e questo non è vero.

+3

È piuttosto confuso avere la funzione 'git flow [pull, track, checkout]'. – Drake

+0

Non è {{pull}} usato quando stai già localizzando un ramo e vuoi solo recuperarlo e unirlo? – acme

7

This answer dal brainimus illustra l'aspetto collaborativo di un ramo di caratteristica, utilizzando la richiesta di pull aspetto GitHub che facilita la revisione del codice e parte la discussione:

  1. Creare un ramo di caratteristica: git flow feature start module_1
  2. Il codice viene aggiornato sul ramo di funzionalità
  3. Mentre le modifiche vengono eseguite, vengono trasferite a GitHub (o una volta alla fine se preferite)
  4. Quando la funzione è completato un pull richiesta viene aperto nel GitHub confrontando develop e al ramo della funzione module_1
  5. Il team esamina la richiesta di pull e fa commenti
  6. Eventuali modifiche dalla richiesta di pull sono realizzati al ramo funzione
  7. Una volta che tutte le modifiche sono incorporati sul ramo funzione al ramo della funzione è terminato: git flow feature finish module_1
  8. il ramo develop è spinto a GitHub (GitHub contrassegna automaticamente la richiesta di pull come chiuso/fusa quando questo accade)

che lascia la questione della chiusura di quel ramo però:

Chi ha mai eseguito git flow feature finish module_1 avrà il lusso di loro ramo di caratteristica locale di essere eliminati, ma qualcun altro che ha estratto il ramo con hanno a che fare questo manualmente se vogliono

mi sento di raccomandare un git fetch --prune, especially since Git 1.8.5 you can set that "prune" step in your config: un semplice git fetch rimuoverà la filiale funzione se è stato eliminato sul lato server (da qualcun altro facendo un git flow feature finish)

0.123.516,410617 millions

Il gitflow feature track se il AVH edition semplicemente Checkout e traccia il ramo, che è assicurarsi che il ramo locale diventa un ramo monitoraggio locale, con (un ramo monitoraggio remoto) upstream branch associato ad esso.
In altre parole, imposta branch.<name>.remote e branch.<name>.merge.

Se fate una git flow feature pull (per un nuovo ramo di caratteristica locale), ma significava in realtà git flow feature track, tutto quello che avrebbe bisogno di fare sarebbe quella di make your existing branch track the upstream one:

git branch -u origin/feature 

generale:

  • voi start con git flow feature track,
  • quindi si mantiene aggiornato il ramo delle funzionalità locali con git flow feature pull
  • si passa da questi rami con git flow feature checkout

Come menzionato in "Getting Started – Git-Flow":

git flow feature pull 

Questo sarà fatto quando più di una persona che lavora su una caratteristica insieme.
Si consiglia di utilizzare questo comando se si vuole fare un tirare al ramo della funzione remota come segue:

git flow feature pull [alias] [featureName] 

Utilizzando questo comando si otterrà il codice sorgente che è stato spinto da i tuoi compagni di squadra e le loro modifiche verranno automaticamente integrati nel tuo ramo locale.
Se ci sono conflitti, sarai sfortunato o fortunato a fare le risoluzioni di questi conflitti.

+0

Anche qualche consiglio per usare il git-flow ufficiale, o l'edizione AVH?
Recentemente mi sono confuso con i rami delle caratteristiche che si sono divergenti dopo "' 'git pull''', e voglio mettere in atto alcune procedure per il nostro team. – dashesy

+0

@dashy Ho dettagliato le differenze tra 'feature branch gitflow [pull, track, checkout]' – VonC

+1

@VonC Questo non risolve veramente la domanda sul perché uno vorrebbe mai 'pull' invece di' track' (e ormai con esperienza ho raggiunto la conclusione che non esiste un vero motivo per fare 'pull'). La prima parte della tua risposta non ha niente a che fare con l'argomento. Per quanto riguarda la seconda parte, non c'è il comando 'gitflow feature push'. – OpherV