In Git posso fare questo:
1. Inizia a lavorare su una nuova funzione: $ git co -b newfeature-123 # (un ramo di sviluppo di funzionalità locali) fai qualche commit (M, N, O) maestro A --- B --- C \ nuova funzione-123 M --- N --- O 2. Estrarre nuove modifiche dal master upstream: $ git pull (master aggiornato con ff-commit) master A --- B --- C --- D --- E --- F \ nuova funzione-123 M --- N --- O 3. Rebase off master in modo che la mia nuova funzionalità può essere sviluppato rispetto alle ultime modifiche a monte: (da newfeature-123) $ git rebase master master A --- B --- C --- D --- E --- F \ nuova funzione-123 M --- N --- O
Voglio sapere come fare la stessa cosa in Mercurial, e ho cercato il web per una risposta, ma il meglio che ho potuto trovare è stato: git rebase - posso farlo
Questo link fornisce 2 esempi:
1. Devo ammettere che questo: (sostituendo le revisioni dell'esempio con quelle del mio esempio)
hg up -CF hg branch -f newfeature-123 hg trapianto -a -b nuova funzionalità-123
non è poi così male, tranne per il fatto che lascia l'MNO pre-rebase come testa non unita e crea 3 nuovi commit M ', N', O 'che li rappresentano ramificando la linea principale aggiornata.
Fondamentalmente il problema è che finisco con questo:
master A --- B --- C --- D --- E --- F \ \ newfeature-123 \ M '--- N' --- O ' \ nuova funzione-123 M --- N --- O
ciò non va bene perché lascia dietro di sé impegni locali e indesiderati che dovrebbero essere eliminati.
- L'altra opzione dallo stesso link è
hg qimport -r M: O hg qpop -a hg up F hg branch newfeature-123 hg qpush -a hg qdel -r qbase: qtip
e questo si traduce nel grafico desiderato:
master A --- B --- C --- D --- E --- F \ nuova funzione-123 M --- N --- O
ma questi comandi (tutti e 6!) sembrano molto più complicati di
$ git rebase master
Voglio sapere se questo è l'unico equivalente in Hg o se è disponibile un altro modo semplice come Git.
git reflog
e non sono completamente spariti fino a quando non vengono raccolti i rifiuti. Se vuoi tenerli in giro in un ramo con nome in modo da non dover usare il reflog, fallogit branch feature-123_original
prima di ripassare.