Sincronizar local git repo con control remoto de una sola vez descartando cambios / confirmaciones locales

No soy un experto en git, así que esto podría parecer una pregunta tonta.

Tengo repositorys locales y remotos, quiero sincronizar mi local con el repository remoto. Tengo muchos cambios locales, cambios ocultos y pocas confirmaciones que aún no se han enviado a remoto.

Una forma puede ser eliminar todos los cambios locales (utilizando git clean ), revertir confirmaciones y luego fetch/pull desde remoto. Pero creo que debe haber algún command único que pueda hacer todo esto de una vez. Traté de usar git reset --hard HEAD y luego git pull pero eso me dio:

 # Your branch and 'origin/master' have diverged, # and have 1 and 9 different commits each, respectively. 

Estaba viendo esta pregunta también, pero no ayudó.

Como se comentó, un git reset --hard origin/master restablecería su master a la stream ascendente.

Pero: su maestro actual (con su confirmación local) se "perderá" (al less, ya no será visible).

Entonces, un paso no es el mejor enfoque.

Yo recomendaría algo como:

 git checkout master git fetch origin git branch tmp git reset --hard origin/master git checkout tmp git rebase master git checkout master git merge tmp git branch -d tmp 

De esa forma, rebase sus confirmaciones locales sobre el maestro actualizado

 x--x--x--x--x (master, origin/master) x--x--x--x--x--y'--y' (tmp, master) \ => y--y (tmp) (after rebase+merge) 
 git fetch -[options] 

Revisa:

 git fetch --help 

para las funcionalidades que puedes usar