He estado trabajando en un proyecto, pero desafortunadamente, olvidé cambiar a mi sucursal y, como tal, he estado trabajando en master
¿Cómo puedo copiar el trabajo (3 archivos) que he hecho aquí desde master a mi sucursal (llamada, por ejemplo, branch123 ) sin iniciar el master?
stash
guarda las modificaciones locales y luegostash apply
las recupera.git reset --hard HEAD
y estás de vuelta a la última confirmación que hiciste a tu rama maestra.La respuesta aceptada es la más completa, pero hay un caso especial en el que puede simplificar. Si los archivos que ha modificado en el directorio de trabajo son idénticos en ambos
master
ybranch123
simplemente puede hacerNo es necesario guardar nada, ya que el comportamiento predeterminado de
checkout
NO es sobrescribir los archivos modificados en su directorio de trabajo, por lo que no perderá nada. (Esto fue mencionado en los comentarios primero por Cascabel)Como otras personas han mencionado en los comentarios, si
branch123
aún no existe, puede hacerBasado en lo que encontré aquí .
fuente
git checkout -b newbranch
master
ybranch123
. Ver mi respuesta editada.git stash
es lo que necesitasUna explicación completa se puede encontrar en Git-Tools-Stashing
fuente
Como es posible crear una nueva rama pero no es posible pagar una rama existente mientras se extraen los archivos, encontré el siguiente truco usando una rama temporal para trabajar:
Este escenario funciona al menos con el complemento VS 2015 Git, pero lo más probable es que funcione con cualquier herramienta git.
EDITAR: descubrí que tendrá que realizar un rebase (git rebase --onto) de la rama temporal antes de realizar la fusión. De lo contrario, los cambios en master se incluirán en la fusión. Un paso adicional 3.5 arriba. Ver más sobre rebase aquí: https://git-scm.com/book/en/v2/Git-Branching-Rebasing
fuente