Accidentalmente fusionado twig remota al maestro local. ¿Cómo retroceder?

Hice un montón de trabajo en un maestro local que decidí que necesitaba una nueva sucursal. Creé una diffraction twig en una máquina en el trabajo y la empujé:

 $ git checkout -b diffraction $ git push 

Luego fui a otra máquina y fui a searchla:

 $ git fetch ... * [new branch] diffraction -> origin/diffraction ... $ git merge origin/master Already up-to-date. $ git merge origin/diffraction Merge made by the 'recursive' strategy. .gitignore | 4 +- Makefile | 11 + ... 9 files changed, 8225 insertions(+), 24 deletions(-) create mode 100644 ... $ git branch atmosphere * master rollback 

Sin ramificación de diffraction . Además, simplemente extraje el material de origen / difracción en el maestro local en lugar de get una nueva twig y realizar un control en ella. Pensé que era cúpula automáticamente.

  1. ¿Cómo puedo retroceder los cambios (confirmados pero no modificados) de mi maestro local? Quiero que se mantenga apuntado al origen / maestro.

  2. ¿Cómo busco el origen / difracción en una difracción local? Podría ser bueno tenerlo apuntando automáticamente allí.

Cuando hiciste git merge origin/diffraction , le dijiste a Git que fusionara 'origen / difracción' en tu twig actual. Lo que quería en cambio era decirle a Git que creara una nueva sucursal local basada en 'origen / difracción'.

Esto se hace con git checkout -b diffraction origin/diffraction , o incluso más simple:

 git checkout diffraction 

Si desea deshacer la fusión que hizo por error, puede hacer:

 git reset --hard @^ 

Lo cual restablecerá el puntero de la twig principal actual, a la confirmación anterior, es posible que desee comprobar que la confirmación anterior es la que desea, con git show @^ . De lo contrario, tendría que replace '@ ^' con el SHA-1 de la confirmación que desea restablecer.

La puesta en marcha

 git clone https://github.com/svnpenn2/foo foo-1 git clone https://github.com/svnpenn2/foo foo-2 cd foo-1 set $RANDOM echo $1 > README.md git commit -am $1 git checkout -b diffraction git push origin diffraction cd ../foo-2 git fetch git merge origin/diffraction 

El problema

 $ git branch * master 

La solución

 $ git checkout diffraction Branch diffraction set up to track remote branch diffraction from origin. Switched to a new branch 'diffraction' $ git branch * diffraction master