Hice un git stash popy terminé con conflictos de fusión. Eliminé los archivos del sistema de archivos e hice lo git checkoutque se muestra a continuación, pero cree que los archivos aún no están fusionados. Luego intenté reemplazar los archivos y hacer un resultado git checkoutnuevo y el mismo. Intenté forzarlo con la -fbandera. ¡Cualquier ayuda sería apreciada!
chirag-patels-macbook-pro:haloror patelc75$ git status
app/views/layouts/_choose_patient.html.erb: needs merge
app/views/layouts/_links.html.erb: needs merge
# On branch prod-temp
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   db/schema.rb
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       unmerged:   app/views/layouts/_choose_patient.html.erb
#       unmerged:   app/views/layouts/_links.html.erb
chirag-patels-macbook-pro:haloror patelc75$ git checkout app/views/layouts/_choose_patient.html.erb
error: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
chirag-patels-macbook-pro:haloror patelc75$ git checkout -f app/views/layouts/_choose_patient.html.erb
warning: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
                    
                        git
                                git-stash
                                git-checkout
                                
                    
                    
                        Chirag Patel
fuente
                
                fuente

git stash apply/popdebería ser más fácil con Git 2,5 (Q2 2015), ya que el árbol de trabajo ahora debe estar limpia: véase mi respuesta a continuaciónRespuestas:
Ver man git merge ( CÓMO RESOLVER CONFLICTOS ):
Y bajo VERDADERO FUSIÓN (para ver a qué se refiere 2. y 3.):
Por lo tanto: utilícelo
git reset --hardsi desea eliminar los cambios de alijo de su árbol de trabajo, ogit resetsi solo desea limpiar el índice y dejar que los conflictos en su árbol de trabajo se fusionen a mano.En man git stash ( OPTIONS, pop ) puedes leer además:
fuente
Me sucedió algo similar. Todavía no quería organizar los archivos, así que los agregué
git addy luego lo hicegit reset. Básicamente, esto solo agregó y luego eliminó mis cambios pero eliminó los caminos no fusionados.fuente
reset --hardporque no sobrescribe sus archivos (excepto los que tienen problemas de fusión). ¡Gracias!addmuestra el contenido del árbol de trabajo al índice? No creo entender por qué su respuesta funciona a partir de la descripción.git addlos presenta perogit reset, lo que hago inmediatamente después, los desestabiliza. Esencialmente, despeja los caminos no fusionados y me devuelve a mi árbol de trabajo normal fingiendo git.git addsi vas a hacerlogit reset. Elgit resetefectivamente "deshace" elgit add.git reset(--mixed<- predeterminado) efectivamente no toca el directorio de trabajo, por lo que exactamente lo que estaba en su directorio de trabajo, fusionar conflictos y todo, se deja solo. Sin embargo, el índice (y técnicamente el encabezado de la rama) se restablece (sin una referencia a la que se restablecenHEAD, lo que probablemente significa que no hay cambios para el encabezado de la rama, y deshace efectivamente cualquiergit addhecho en el índice, así como también borra el estado de las rutas no fusionadas) .git resetygit stash dropfunciona bien. Hace logit stash popque hubiera hecho sin conflictos. Parece que nogit addes necesario; aunque puede ser útil, tiene muchos archivos con conflictos. A medida que se resuelven , se pueden agregar y realizargit statusun seguimiento de ellos.Si, como yo, lo que generalmente desea es sobrescribir el contenido del directorio de trabajo con el de los archivos escondidos, y aún tiene un conflicto, entonces lo que desea es resolver el conflicto
git checkout --theirs -- .desde la raíz.Después de eso, puede
git resettraer todos los cambios del índice al directorio de trabajo, ya que aparentemente en caso de conflicto, los cambios en los archivos no conflictivos permanecen en el índice.También es posible que desee ejecutar
git stash drop [<stash name>]después, para deshacerse del alijo, porquegit stash popno lo elimina en caso de conflictos.fuente
Tenga en cuenta que
Git 2.5 (Q2 2015)un futuro Git podría intentar hacer ese escenario imposible.Ver commit ed178ef por Jeff King (
peff), 22 de abril de 2015.(Fusionada por Junio C Hamano -
gitster- en commit 05c3967 , 19 de mayo de 2015)Nota: Esto ha sido revertido. Ver abajo .
Problema
En otras palabras:
Solución
Ver commit 1937610 (15 de junio de 2015), y commit ed178ef (22 de abril de 2015) por Jeff King (
peff) .(Fusionada por Junio C Hamano -
gitster- en commit bfb539b , 24 jun 2015)fuente