GIT Sovrascrivi ramo con master


33

Ho un vecchio ramo di sviluppo che è completamente obsoleto. Non voglio rimuoverlo, ma voglio sostituirlo interamente con il ramo principale. Voglio dire, voglio dev_branch = master

Provai:

git merge -s ours dev_branch

Non ha funzionato però ...

Risposte:


53

Se desideri tutte le modifiche da masterin dev_branch, allora:

git checkout dev_branch
git reset --hard master

Funziona solo se altre persone non hanno clonato il repository.

Se hai già dev_brancheseguito il push su un telecomando, devi fare:

git push --force

Per forzare la spinta al telecomando. Attenzione: questo spezzerà la storia del ramo per le persone che l'hanno clonato prima! Poi, gli altri dovranno fare un git pull --rebasein dev_branchper ottenere le modifiche.


Puoi anche rinominare il ramo dev in qualcosa di vecchio e quindi creare un nuovo ramo mastercon lo stesso nome:

git branch -m dev_branch old_dev_branch
git branch -m master dev_branch

Oppure, usa la oursstrategia - non sei sicuro del perché non funzioni per te:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master

Con la soluzione di ridenominazione, penso che scoprirai che ora non puoi spingere dev_branchverso l'origine (se ne avesse uno), e inoltre non avrai più un masterramo a livello locale.
Aidan il

Grazie @slhck! Per qualche ragione, il mio ramo di scena non veniva aggiornato dopo aver fatto una normale unione. Continuava a dire che il mio ramo del palcoscenico era aggiornato. L'uso della strategia "nostra" ha risolto questo problema per me.
Slick Shinobi,

il nostro interesserebbe solo i pezzi in conflitto, ma vuole rinnovare completamente il ramo, non solo i conflitti! (questo è almeno quello che devo fare e perché ho trovato questa Q) - Vado a rinominare!
Martin Meeser,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.