Esta pregunta es similar a esta , pero más específica.
Tengo un proyecto con dos ramas ( staging
y beta
).
Me desarrollo staging
y uso la master
rama para corregir errores. Entonces, si estoy trabajando en la preparación y veo un error, cambio a master
rama:
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 trato de cambiar a la master
rama, recibo 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 obtengo el mismo error Si lo hago git status
me saleNo changes to commit
git
git-checkout
Manolo
fuente
fuente
reset --hard
? Si realmente está seguro de que desea descartar sus cambios. O use alijo si no lo hace.git add your-file
y comprométete.staging
momento.Respuestas:
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, según lo veo, son: commit, y luego enmendar este commit con cambios adicionales (puede modificar los commits en git, siempre que no estén
push
editados); o - use alijo:git stash save
creará un alijo que contenga sus cambios, pero no está asociado con ninguna confirmación ni rama.git stash pop
aplicará la última entrada de alijo a su rama actual, restaurando los cambios guardados y eliminándolo del alijo.fuente
add
cuando en realidad estásave
... actualizado. ¿Te refieres a otros archivos?git stash save
sin parámetro de nombre de archivo guardará todos los archivos modificados, si lo desea (y los revertirá al último estado comprometido). Y tener una copia extra del árbol de directorios nunca está de más, pero siempre estoy paranoico al respecto.master
rama. Además, ¿una opción seríanpop
los cambios en otra rama?master
, pero al hacerlo perderá su contenido actual, y dado que este contenido no está comprometido, sería imposible volver a este estado más tarde, por lo tanto, es un error. no estaría molesto por los cambios perdidos más tarde.Encontré el mismo problema y lo resolví
y su especificación es bastante clara.
fuente
Puede forzar el pago de su sucursal, si no desea confirmar sus cambios locales.
fuente
sudo
es necesario, solo romperá los permisos del archivo. Es el mismo comando git publicado por @kiki_yu un año antes, pero es aún peor.Bueno, ten cuidado con el
-f
interruptor. Perderá los cambios no confirmados si utiliza el-f
interruptor. Si bien puede haber algunos casos de uso en los que es útil usarlo-f
, en la mayoría de los casos, es posible que desee realizarstash
cambios y luegoswitch
ramificaciones. Elstashing
procedimiento se explica arriba.fuente
Puede comprometerse en la rama actual, pagar a otra rama y, finalmente, seleccionar esa confirmación (en lugar de fusionar).
fuente
Si obtienes esto cuando intentas verificar una rama diferente:
Esto significa que tiene algunos cambios que necesita confirmar en la rama que ha desprotegido, o debe borrarlos o esconderlos como la mayoría de los puntos anteriores. 19 de cada 20 veces tengo muchas más probabilidades de cometer mis cambios.
Ahora que lo ha hecho, puede ver la otra rama y alternar con bastante facilidad.
Solo asegúrese de estar en la rama derecha y presionar hacia la rama correcta cuando ejecute el comando git push origin $ {branch}. Nota: si tiene su proyecto conectado directamente a Intellij, puede ver que cambió su rama en la esquina inferior derecha de la ventana principal.
fuente