HOWTO · Git

Mover cambios no confirmados existentes a una nueva rama en Git

Puede mover sus cambios no confirmados a una nueva rama en Git.

Este artículo analiza el proceso de mover cambios no confirmados a una nueva rama.

Puede estar trabajando en su rama maestra y darse cuenta de que debe crear una nueva rama y mover los cambios no confirmados. Si estás en una situación similar, quédate.

Mover cambios no confirmados existentes a una nueva rama

Tome este escenario hipotético: está trabajando en su rama maestra y se da cuenta de que su código necesita pruebas antes de que pueda comprometerse con la maestra.

Debe crear una nueva rama, mover los cambios no confirmados y restablecer su rama maestra. ¿Cómo haces esto?

Hay dos maneras de hacer esto.

  1. Usando el comando git checkout o el comando git switch.
  2. Usando el comando git stash.

los comandos git checkout y git switch

Si ha estado usando Git durante años, probablemente sepa que el comando git checkout tiene varios usos. Sabes que podemos usar el comando git checkout para crear y cambiar a una nueva rama.

Suponiendo que estamos en nuestra rama maestra, y nuestro espacio de trabajo se ve así:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to ...)
  (use "git checkout -- <file>..." to ...)
        modified:   LICENSE.md
        modified:   README.md
Untracked files:
  (use "git add <file>..." to include...)
        scripts.txt
no changes added to commit (use..)

¿Cómo trasladamos estos cambios a una nueva sucursal?

Para mover los cambios a una nueva rama, por ejemplo, una nueva rama de desarrollo, ejecutaremos:

$ git checkout -b development

Alternativamente, podemos usar el comando git switch, como se ilustra a continuación.

$ git switch -c development

Ambos comandos crearán una rama de desarrollo y moverán nuestros cambios no confirmados a la nueva rama. A continuación se muestra nuestro directorio de trabajo en la rama desarrollo.

espacio de trabajo de la rama de desarrollo

Luego podemos agregar los archivos al índice y confirmar.

Si volvemos a la rama maestra y ejecutamos el comando git status, veremos que nuestro árbol de trabajo está limpio.

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

el comando git stash

Podemos mover los cambios a una nueva rama usando el comando git stash. Esto almacenará los cambios no confirmados en un archivo de parche.

$ git stash

Luego puede crear una nueva rama donde almacenará los cambios no confirmados. Use el comando git checkout para crear y cambiar a la nueva rama, como se muestra a continuación.

$ git checkout -b <new branch>

Haga estallar el alijo para aplicar los cambios no confirmados en el espacio de trabajo de la rama recién creada. Usa los comandos git stash pop o git stash apply.

$ git stash pop

Es posible que obtenga conflictos de fusión que tendrá que resolver manualmente a su gusto. Si está satisfecho con los cambios, proceda a confirmar.

En pocas palabras, para mover cambios no confirmados de una rama a otra, tiene dos opciones. Puede usar el comando git stash o los comandos convencionales git switch y git checkout.