Per unire il ramo corrente in un altro ramo senza estrarre l'altro ramo:
Unione rapida
Questo è davvero facile. Per definizione, una fusione in avanti veloce significa semplicemente che il puntatore del ramo viene spostato avanti nella struttura di commit. Quindi tutto ciò che devi fare è solo simulare che:
git branch -f master dev
Avvertenze: questo presuppone che master
punti a un commit che è anche in dev
branch o in qualche altro branch. In caso contrario, rischi di perdere il lavoro! Diversamente da git merge
ciò creerà un commit di unione (o lamentarsi) quando non è possibile avanzare rapidamente, questo metodo forza silenziosamente il puntatore del ramo a puntare a un altro commit.
Questo presuppone anche che tu sia l'unico a lavorare sul repository e / o tu sappia cosa stai facendo.
Suggerimento: se hai fatto un git fetch
e hai nuovi commit origin/master
, puoi spostare la master
filiale senza effettuare il checkout utilizzando:
git branch -f master origin/master
Unisci tramite unisci unione
Questo non è sempre possibile. Per creare un commit di unione, è necessario eseguire un'operazione di unione. E per eseguire un'operazione di unione, è necessario eseguire commit nell'altro ramo che non si trova nel ramo corrente.
Se hai commesso in master
filiale sono che non sono nella dev
branch, è possibile:
Disclaimer: questa è solo una prova di concetto, solo per dimostrare che a volte è possibile fare una fusione con l'altra filiale senza effettuare il check-out. Se vuoi usarlo ogni giorno, probabilmente vorrai creare un alias usando il reindirizzamento della shell o creare uno script di shell per esso. Quindi, puoi anche creare uno script di shell per il processo più breve mostrato nella domanda.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Spiegazione:
- Controlla un ramo temporaneo che punta allo stesso commit del ramo corrente.
Unisci master
nel ramo temporaneo e avvia l'editor dei messaggi di commit. Se si desidera che il commit della fusione assomigli hai unito il dev
ramo in master
, modificalo da questo:
Merge branch 'master' into temp
a questa:
Merge branch 'dev'
Mancia: puoi usare -m "Merge branch 'dev'"
invece di -e
essere più veloce.
- Aggiorna il
master
puntatore del ramo in modo che punti al commit di unione.
- Dai un'occhiata alla
dev
filiale.
- Forza l'eliminazione del ramo temporaneo.
Questo tocca ancora l'albero di lavoro, ma minimamente. Non esegue il rollback dell'albero fino allo stato originale master
solo per apportare nuovamente i cambiamenti di sviluppo. Ad alcuni potrebbe non interessare, ma per altri potrebbe essere importante.