web-dev-qa-db-fra.com

Pourquoi ne puis-je pas changer de branche?

J'essaie de changer de branche dans git mais je reçois ce message d'erreur:

error: you need to resolve your current index first

J'utilise git sous 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
75
lampShade

Essayez ceci si vous ne voulez aucune des fusions listées dans le statut git:

git reset --merge

Ceci réinitialise l'index et met à jour les fichiers de l'arborescence de travail qui diffèrent entre <commit> et HEAD, mais conserve ceux qui sont différents entre l’index et l’arbre de travail (c’est-à-dire dont les modifications n’ont pas été ajoutées).

Si un fichier différent de <commit> et que l'index a des modifications non staged - la réinitialisation est annulée.

Plus d'informations à ce sujet - https://www.techpurohit.com/list-some-useful-git-commands & Doc link - https://git-scm.com/docs/ git-reset

90
jitendrapurohit

Vous vous retrouvez avec both modified dans la sortie de git status s'il y avait des conflits produits par une fusion. git ne vous laisse pas changer de branche tant que vous n'avez pas résolu ces conflits. Si vous éditez ce fichier, vous devriez y voir quelques marqueurs de conflit - il y a un guide pour la résolution de ces conflits dans le manuel de git . (Kernel.org étant en panne, vous pouvez trouver ce guide ici à la place.)

Sinon, si vous pensez que la fusion est une erreur, vous pouvez l'annuler avec: git reset --merge

53
Mark Longair

Si vous ne vous souciez pas des changements qui, selon git, sont en suspens, vous pouvez effectuer une vérification forcée.

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

15
jyapx

vous pouvez réinitialiser votre branche avec HEAD

git reset --hard branch_name

puis chercher des branches et supprimer des branches qui ne sont pas distantes de locales,

git fetch -p 
6
Deepika Patel

J'ai reçu ce message lors de la mise à jour de nouveaux fichiers à partir de la télécommande et l'index s'est effondré. J'ai essayé de réparer l'index, mais la résolution via Xcode 4.5, GitHub.app (103) et GitX.app (0.7.1) a échoué. Alors j'ai fait ça:

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

qui a fonctionné en contournant l'indice git.

Voici deux articles de blog qui m'ont aidé à comprendre Git et Xcode:

  • Ray Wenderlich sur Xcode 4.5 et
  • 5
    user1256093

    Comme le fichier est modifié par les deux, vous devez soit l’ajouter par

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

    Ou si vous souhaitez ignorer vos modifications, faites alors

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

    Après cela, il suffit de changer de succursale. Cela devrait faire l'affaire.

    1
    Koshik Raj

    Vous devez valider ou détruire les modifications non enregistrées avant de changer de branche.

    Git ne vous laissera pas changer de branche si cela signifie que les modifications non enregistrées seraient supprimées.

    1
    Andrea