revertir - pasar cambios de una rama a otra git
Error al cambiar a la rama maestra: mis cambios locales serían sobrescritos por el pago y envío (5)
Me encontré con el mismo problema y lo resolví por
git checkout -f rama
Bueno, ten cuidado con el interruptor -f
. Perderá cualquier cambio no confirmado si usa el modificador -f
. Si bien puede haber algunos casos de uso en los que es útil usar -f
, en la mayoría de los casos, es posible que desee stash
los cambios y luego switch
rama. El procedimiento de stashing
se explica anteriormente.
Esta pregunta es similar a esta , pero más específica.
Tengo un proyecto con dos ramas ( staging
y beta
).
Me desarrollo en la staging
en staging
, y uso la rama master
para corregir errores. Entonces, si estoy trabajando en la puesta en escena y veo un error, cambio a la rama master
:
git checkout master
y hacer las cosas
git add fileToAdd
git commit -m "bug fixed"
y luego me fusiono con ambas ramas:
git checkout staging
git merge master
git checkout beta
git merge beta
Y no importa si hay otros archivos en el árbol de trabajo.
Pero ahora, cuando intento cambiar a la rama master
, aparece un error :
error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting
Pensé que debería eliminar el archivo del área de preparación:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
Pero estoy recibiendo el mismo error. Si hago git status
no obtengo No changes to commit
Me encontré con el mismo problema y lo resolví por
git checkout -f branch
y su especificación es bastante clara.
-f, --fuerza
Al cambiar de rama, proceda incluso si el índice o el árbol de trabajo difieren de HEAD. Esto se utiliza para tirar los cambios locales.
Al retirar las rutas del índice, no falle en las entradas no combinadas; en su lugar, las entradas no combinadas se ignoran.
Puede cometer en la sucursal actual, realizar el pago en otra sucursal y, finalmente, seleccionar esa comilla (en lugar de fusionar).
Puede forzar el pago de su sucursal, si no desea confirmar sus cambios locales.
git checkout -f branch_name
Su error aparece cuando ha modificado un archivo y la rama a la que está cambiando también tiene cambios para este archivo (desde el último punto de fusión).
Sus opciones, tal como lo veo, son: confirmar y luego enmendar esta confirmación con cambios adicionales (puede modificar las confirmaciones en git, siempre y cuando no se push
). o - usar el alijo:
git stash save your-file-name
git checkout master
# do whatever you had to do with master
git checkout staging
git stash pop
git stash save
creará un alijo que contiene sus cambios, pero no está asociado con ningún commit o incluso una rama. git stash pop
aplicará la última entrada de alijo a su rama actual, restaurando los cambios guardados y eliminándolos del alijo.