2011-12-20 9 views
41

Sono nuovo su git e git flow. Ho letto tutte le varie pagine, i blog e le domande sullo stackoverflow su di esso e l'ho utilizzato nel mio sviluppo quotidiano.git flow: come faccio a sospendere lo sviluppo di una funzione per lavorare su un'altra

Ma un problema mi ha infastidito, non riesco a capirlo. So che i rami delle funzionalità dovrebbero essere piccoli, si avvia una funzionalità, si codifica una parte di essa, quindi si completa la funzione. Questo è un evento quotidiano, ho capito. Facciamo semplicemente in modo che il nostro ramo di sviluppo sia sempre realizzabile.

Ma cosa succede quando sono nel mezzo di una funzione, non è pronto per essere completato, ma le priorità di lavoro cambiano? Mi piacerebbe essere in grado di passare a un'altra funzione.

Ad esempio, avvio una nuova funzione.

$ git flow feature start yak-Speedup 

Scrivo codice, file di commit, ecc ... e sto facendo buoni progressi su di esso. Ma ora ho bisogno di cambiare quello su cui sto lavorando, soprattutto perché ho bisogno di una risorsa che non è disponibile e il programmatore del server non lo avrà pronto per un giorno o due. Non riesco a completare la funzione perché interromperà il ramo di sviluppo.

mi piacerebbe fare qualcosa di simile:

$ git flow feature pause yak-Speedup 
$ git flow feature start alpaca-Sheering 
#write code 
$ git flow feature finish alpaca-Sheering 
$ git flow feature resume yak-Speedup 

Infatti, l'esistenza della "lista delle caratteristiche del flusso git" comando implica che io possa avere diverse caratteristiche che vanno allo stesso tempo. Ma non vedo come creare o passare da una funzionalità all'altra. In effetti, sto iniziando a pensare che questo non sia affatto un problema di git flow, ma un problema di git.

Apprezzo qualsiasi aiuto. Grazie!

risposta

40

non ti servono il comando git flow feature pause yak-Speedup (feature pause non esiste comunque). Il comando che si desidera utilizzare al posto di git flow feature resume yak-Speedup è git flow feature checkout yak-Speedup; che ti riporterà sul ramo di funzionalità yak-Speedup per continuare lo sviluppo.

Esecuzione git flow display:

Try 'git flow <subcommand> help' for details. 

e l'esecuzione di git flow feature help visualizza:

usage: git flow feature [list] [-v] 
     git flow feature start [-F] <name> [<base>] 
     git flow feature finish [-rFk] <name|nameprefix> 
     git flow feature publish <name> 
     git flow feature track <name> 
     git flow feature diff [<name|nameprefix>] 
     git flow feature rebase [-i] [<name|nameprefix>] 
     git flow feature checkout [<name|nameprefix>] 
     git flow feature pull <remote> [<name>] 
+2

è fantastico! Suppongo che non ci sia assolutamente bisogno di mettere in pausa yak-Speedup. È sufficiente iniziare l'alapca-Sheering? –

+0

corretto. Risposta aggiornata –

+0

Impressionante, segno di spunta verde in arrivo. Grazie! –

0

Che cosa si vuole veramente sono rami:

git branch feature1 <startingpoint> 
git checkout feature1 
# hack hack hack, commit commit commit 
git branch feature2 <startingpoint> 
git checkout feature2 
# hack hack hack, commit commit commit 
# Oops, urgent request comming in, must switch to stable and patch 
git stash 
git checkout stable 
# patch, commit, push 
# back to feature2 
git checkout feature2 
git stash pop 

ecc ecc rami tutti per questo.

E una volta che si conosce la funzionalità è buona, unire in dev e spingere.

+1

come funziona con gli strumenti di git flow? Può gestire il flusso? O semplicemente ignoro gli strumenti di git flow a questo punto. Flusso Git in realtà è solo rami ... –

+0

questa caratteristica legami da 1 a feature2. In altre parole, non è più banale spedire senza feature1 nel caso in cui si decida contro di esso, ma si desidera comunque feature2. –

+1

Eh? Basta unire solo ciò che vuoi in 'dev', non ci sono legami di alcun tipo qui! – fge

0

Utilizzare un modello più esplicito. Questo è il flusso di git migliorata senza comandi extra:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

La cosa importante è che non si dovrebbe iniziare feature2 off di feature1.

Spero che questo aiuti.

UPDATE

ho bloggato su questo. Spero che sia un po 'più chiaro:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

+3

Mi dispiace Adam, l'ho letto come parte della mia ricerca su questo, e ho appena rileggerlo Non capisco cosa stai cercando di dire. Forse è brillante, ma non è chiaro cosa stai cercando di realizzare. Se vuoi che la tua idea sia accettata, devi scrivere chiaramente come nvie, Kreefmeijer e soprattutto chiara come Yakiloo. –

+0

Sì, è approssimativo, ma era necessario metterlo giù al momento. La chiave è che è possibile ricreare un ramo (lo chiamiamo il ramo QA) per assemblare funzionalità sufficientemente buone per la produzione. Se non si desidera una funzionalità, è sufficiente eliminare il ramo e ricrearlo unendo le funzionalità desiderate, omettendo quelle che non sono. Non puoi farlo se fai partire da feature2 da qualche parte in feature1. –

+0

Quando avrò tempo, metterò un post illustrato. –

1

in ritardo alla festa, ma la mia esperienza è this..I git uso in combinazione con il flusso di git ..

git flow feature start foo <<== start 
#code, hack and COMMIT 
git checkout develop  <<== go back to develop branch.. 
git flow feature start foo2 <<== start a new feature 
#code, hack and COMMIT 
git checkout feature/foo <<== go back to foo. NB: using full branch name 

Tornando a sviluppare mi assicuro di Sto ramificando indipendentemente da foo e usando solo lo sviluppo. Posso anche fare una fusione di sviluppo se ci sono stati commessi anche da altre funzionalità in quel momento ....

+1

FYI: c'è 'git checkout feature/foobar' e' git flow feature checkout foobar' che .. fanno lo stesso.La differenza è che con un semplice comando git, è necessario scrivere 'feature /' e si ottiene il completamento automatico della chiave di tabulazione del nome del ramo (si spera). Con 'checkout delle funzionalità di flusso' invece si ottiene una ricerca automatica del prefisso silenzioso:' git flow checkout pippo 'è sufficiente e recupererà il ramo di funzione 'foobar'. Non è un grosso problema, ma immagina di dover trovare/scrivere/completare automaticamente nomi di rami come "WTF1234_Adding_new_db_layer ogni volta". Con il flusso, 'checkout WTF1234'. – quetzalcoatl

+0

@quetzalcoatl grazie per il suggerimento .. – giulio

Problemi correlati