Diciamo che abbiamo la seguente situazione in Git:
Un repository creato:
mkdir GitTest2 cd GitTest2 git init
Alcune modifiche nel master avvengono e si impegnano:
echo "On Master" > file git commit -a -m "Initial commit"
Feature1 branched master e alcuni lavori sono stati eseguiti:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
Nel frattempo, viene rilevato un bug nel codice master e viene stabilito un ramo hotfix:
git checkout master git branch hotfix1 git checkout hotfix1
Il bug viene corretto nel ramo hotfix e riunito nuovamente nel master (forse dopo una richiesta pull / revisione del codice):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
Lo sviluppo su feature1 continua:
git checkout feature1
Supponiamo che abbia bisogno dell'aggiornamento rapido nel mio ramo delle funzionalità, forse perché il bug si verifica anche lì. Come posso raggiungere questo obiettivo senza duplicare gli commit nel ramo delle mie funzioni?
Voglio impedire di ottenere due nuovi commit sul mio ramo di funzionalità che non hanno alcuna relazione con l'implementazione della funzione. Ciò sembra particolarmente importante per me se utilizzo le richieste pull: tutti questi commit saranno inclusi anche nella richiesta pull e dovranno essere rivisti anche se ciò è già stato fatto (poiché l'aggiornamento rapido è già presente nel master).
Non posso fare un git merge master --ff-only
: "fatale: impossibile avanzare velocemente, abortire", ma non sono sicuro che questo mi abbia aiutato.
git rebase
sembra una magia nera ...
git branch feature1
e git checkout feature1
potrebbero essere combinati in git checkout -b feature1
e 4. potrebbero essere completamente ridotti agit checkout -b hotfix1 master
feature1
è completamente locale, dai un'occhiata agit rebase
.