tag remove example crear git branch commit

remove - Cómo confirmar mis cambios actuales en una rama diferente en git



git push tag (3)

Esta pregunta ya tiene una respuesta aquí:

A veces sucede que realizo algunos cambios en mi directorio de trabajo y me doy cuenta de que estos cambios deben realizarse en una rama diferente a la actual. Esto generalmente ocurre cuando quiero probar cosas nuevas o hacer algunas pruebas y me olvido de crear una nueva rama de antemano, pero no quiero cometer código sucio en la rama maestra.

Entonces, ¿cómo puedo hacer que los cambios no confirmados (o los cambios almacenados en el índice) se confirmen en una rama diferente a la actual?


  1. git checkout my_other_branch
  2. git add my_file my_other_file
  3. git commit -m

Y proporcione su mensaje de confirmación.


Solo puedes crear una nueva rama y cambiarla. Confíe sus cambios entonces:

git branch dirty git checkout dirty // And your commit follows ...

Alternativamente, también puede retirar una sucursal existente (solo git checkout <name> ). Pero solo si no hay colisiones (la base de todos los archivos editados es la misma que en su rama actual). De lo contrario, recibirá un mensaje.


Las otras respuestas que sugieren revisar la otra rama y luego comprometerse con ella, solo funcionan si es posible el pago dadas las modificaciones locales. Si no es así, estás en el caso de uso más común de git stash :

git stash git checkout other-branch git stash pop

El primer stash oculta los cambios (básicamente, realiza una confirmación temporal), y el stash pop al lado posterior stash pop vuelve a aplicar. Esto le permite a git usar sus capacidades de combinación.

Si cuando intenta abrir el alijo, se encuentra con conflictos de combinación ... los siguientes pasos dependen de cuáles son esos conflictos. Si todos los cambios ocultos pertenecen realmente a esa otra rama, simplemente tendrá que ordenarlos, es una consecuencia de haber realizado los cambios en la rama incorrecta.

Por otro lado, si realmente lo ha estropeado y su árbol de trabajo tiene una mezcla de cambios para las dos ramas, y los conflictos son solo en los que desea confirmar en la rama original, puede ahorrar algo de trabajo . Como de costumbre, hay muchas maneras de hacer esto. Aquí hay uno, comenzando desde después de que aparezca y vea los conflictos:

# Unstage everything (warning: this leaves files with conflicts in your tree) git reset # Add the things you *do* want to commit here git add -p # or maybe git add -i git commit # The stash still exists; pop only throws it away if it applied cleanly git checkout original-branch git stash pop # Add the changes meant for this branch git add -p git commit # And throw away the rest git reset --hard

Alternativamente, si se da cuenta antes de que esto suceda, simplemente confirme las cosas que pertenecen a la rama actual. Siempre puedes volver y modificar ese compromiso:

git add -p git commit git stash git checkout other-branch git stash pop

Y, por supuesto, recuerde que todo esto tomó un poco de trabajo, y evítelo la próxima vez, quizás al poner el nombre de su sucursal actual en su indicador agregando $(__git_ps1) a su PS1 en su bashrc. (Ver, por ejemplo, el Git en documentos Bash .)