GIT: ¿Cómo eliminar el file del máster y ponerlo en otra twig?

Accidentalmente agregué y comise el file en el master en lugar de la twig mybranch . Ahora incluso me cambio a mybranch no puedo verlo haciendo el git status . ¿Cómo hacer que ese file vuelva a aparecer para agregar / mybranch y volver a agregar en mybranch ?

Puedes volver a establecer la base de esta confirmación en tu mybranch

Primero, arregle la twig master

 git checkout master git branch tmp // This creates a branch in the "wrong" commit git reset --hard HEAD~1 

Mueves tu twig master un commit de vuelta. Aún tiene una twig temporal que apunta a su compromiso.

Ahora, mueve el compromiso a la twig mybranch

 git checkout tmp git rebase --onto mybranch master tmp git checkout mybranch git merge tmp git branch -d tmp 

El command rebase:

  • El punto de partida: –en mybranch
  • De lo que commit: master
  • a lo que cometer: tmp

Te recomiendo que abras una interfaz para ver qué estás haciendo. Yo uso gitk

 gitk --all & 

Respuesta detallada está aquí . Puedes usar rebase -onto o cherry-pick . En cuanto a mí, prefiero cherry-pick .

En la twig principal, use git rm dir1/dir2/file . En la twig correcta use git show master:dir1/dir2/file >dir1/dir2/file y git add dir1/dir2/file

Si ha actualizado la twig principal después de la confirmación incorrecta, por supuesto no puede usar el master en el command git show para recuperar los files. Puede usar git reflog para encontrar una reference adecuada. Si resulta ser HEAD@{2} el command será git show HEAD@{2}:dir1/dir2/file >dir1/dir2/file

(git reconocerá automáticamente que es el mismo contenido de file, por lo que no debe preocuparse por el doble de espacio de disco).