¿Por qué no puedo cambiar de sucursal?

81

Estoy tratando de cambiar de rama en git pero recibo este mensaje de error:

error: you need to resolve your current index first

Estoy usando git en xcode4

git status
# On branch DateCode
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
#
no changes added to commit (use "git add" and/or "git commit -a")
Frappuccinos-MacBook-Pro:whereami
pantalla de lámpara
fuente
# Rutas no fusionadas: # (use "git reset HEAD <file> ..." para quitar la etapa) # (use "git add / rm <file> ..." según corresponda para marcar la resolución) #
lampShade
Edite su pregunta para pegar esa información, no se puede leer en los comentarios.
Mat
git reset {{currentBranchName}}entonces git checkout . resolverá su problema
muthukumar selvaraj

Respuestas:

95

Pruebe esto si no desea ninguna de las fusiones enumeradas en el estado de git:

git reset --merge

Esto restablece el índice y actualiza los archivos en el árbol de trabajo que son diferentes entre <commit>y HEAD, pero mantiene los que son diferentes entre el índice y el árbol de trabajo (es decir, que tienen cambios que no se han agregado).

Si un archivo que es diferente entre <commit>y el índice tiene cambios sin etapas, se cancela el restablecimiento.

Más sobre esto - https://www.techpurohit.com/list-some-useful-git-commands & Doc link - https://git-scm.com/docs/git-reset

jitendrapurohit
fuente
53

Termina con both modifiedla salida de git statussi hubo conflictos producidos por una fusión. git no te permite cambiar de rama hasta que hayas resuelto estos conflictos. Si edita ese archivo, debería ver algunos marcadores de conflicto en él; hay una guía para resolver esos conflictos en el manual de git . (Dado que kernel.org está actualmente inactivo, puede encontrar esa guía aquí ).

Alternativamente, si cree que la combinación fue un error, puede deshacerla con: git reset --merge

Mark Longair
fuente
19

Si no le importan los cambios que git dice que son sobresalientes, entonces puede hacer una comprobación forzada.

git checkout -f {{insert your branch name here}}

jyapx
fuente
3
Esto era exactamente lo que necesitaba: tenía una rama de prueba en la que una combinación había fallado con muchos conflictos y solo quería tirar la rama. No pude volver a una buena rama (el pago falló y git reset --mergetambién falló). Pero checkout -ffuncionó muy bien.
Chad
6

Recibí este mensaje al actualizar nuevos archivos desde el control remoto y el índice se salió de control. Intenté arreglar el índice, pero falló la resolución a través de Xcode 4.5, GitHub.app (103) y GitX.app (0.7.1). Entonces, hice esto:

git commit -a -m "your commit message here"

que funcionó al pasar por alto el índice git.

Dos publicaciones de blog que me ayudaron a comprender sobre Git y Xcode son:

  • Ray Wenderlich en Xcode 4.5 y
  • Oliver Steele de 2008


  • fuente
    6

    puedes restablecer tu rama con HEAD

    git reset --hard branch_name
    

    luego busque ramas y elimine las ramas que no están remotas de lo local,

    git fetch -p 
    
    Deepika Patel
    fuente
    1

    Debe confirmar o destruir los cambios no guardados antes de cambiar de rama.

    Git no le permitirá cambiar de rama si eso significa que se eliminarían los cambios no guardados.

    Andrea
    fuente
    El error y el git statusresultado indican que no se trata solo de cambios en el árbol de trabajo que se perderían al cambiar de rama, sino que indican que una combinación falló y los conflictos deben resolverse en el índice.
    Mark Longair
    1

    Dado que el archivo es modificado por ambos, debe agregarlo por

    git add Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    O si desea ignorar los cambios de su año, hágalo

    git reset HEAD Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    Después de eso, simplemente cambie su rama. Esto debería funcionar.

    Koshik Raj
    fuente