Warum kann ich keine Filialen wechseln?


81

Ich versuche, Zweige in Git zu wechseln, erhalte jedoch die folgende Fehlermeldung:

error: you need to resolve your current index first

Ich benutze Git unter 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

# Nicht zusammengeführte Pfade: # (verwenden Sie "git reset HEAD <file> ...", um die Bühne zu entfernen) # (verwenden Sie "git add / rm <file> ...", um die Auflösung zu markieren) #
lampShade

Bitte bearbeiten Sie Ihre Frage, um diese Informationen einzufügen. Sie sind in Kommentaren nicht lesbar.
Mat

git reset {{currentBranchName}}dann git checkout . wird Ihr Problem lösen
Muthukumar Selvaraj

Antworten:


95

Versuchen Sie dies, wenn Sie keine der im Git-Status aufgelisteten Zusammenführungen möchten:

git reset --merge

Dies setzt den Index zurück und aktualisiert die Dateien im Arbeitsbaum, die sich zwischen <commit>und HEADunterscheiden, behält jedoch diejenigen bei, die sich zwischen dem Index und dem Arbeitsbaum unterscheiden (dh Änderungen aufweisen, die nicht hinzugefügt wurden).

Wenn eine Datei, die sich zwischen <commit>dem Index unterscheidet, nicht bereitgestellte Änderungen aufweist, wird das Zurücksetzen abgebrochen.

Mehr dazu - https://www.techpurohit.com/list-some-useful-git-commands & Doc Link - https://git-scm.com/docs/git-reset


53

Sie landen both modifiedin der Ausgabe von, git statuswenn es Konflikte gab, die durch eine Zusammenführung erzeugt wurden. Mit git können Sie den Zweig erst wechseln, wenn Sie diese Konflikte gelöst haben. Wenn Sie diese Datei bearbeiten, sollten einige Konfliktmarkierungen darin angezeigt werden. Eine Anleitung zur Lösung dieser Konflikte finden Sie im Git-Handbuch . (Da kernel.org derzeit nicht verfügbar ist, finden Sie diese Anleitung stattdessen hier .)

Wenn Sie der Meinung sind, dass die Zusammenführung ein Fehler war, können Sie sie alternativ rückgängig machen mit: git reset --merge


19

Wenn Sie sich nicht für die Änderungen interessieren, die laut Git ausstehen, können Sie eine Force-Prüfung durchführen.

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


3
Dies war genau das, was ich brauchte - ich hatte einen Testzweig, in dem eine Zusammenführung mit vielen Konflikten fehlgeschlagen war, und ich wollte den Zweig einfach wegwerfen. Ich konnte nicht zu einer guten Filiale zurückkehren (Checkout fehlgeschlagen und git reset --mergeauch fehlgeschlagen). Hat aber checkout -fsuper geklappt.
Tschad

6

Ich habe diese Meldung erhalten, als neue Dateien von Remote aktualisiert wurden und der Index aus dem Ruder gelaufen ist. Es wurde versucht, den Index zu reparieren, aber die Auflösung über Xcode 4.5, GitHub.app (103) und GitX.app (0.7.1) schlug fehl. Also habe ich das gemacht:

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

das funktionierte bei der Umgehung des Git-Index.

Zwei Blog-Beiträge, die mir geholfen haben, Git und Xcode zu verstehen, sind:

  • Ray Wenderlich auf Xcode 4.5 und
  • Oliver Steele von 2008


  • 6

    Sie können Ihren Zweig mit HEAD zurücksetzen

    git reset --hard branch_name
    

    Rufen Sie dann Zweige ab und löschen Sie Zweige, die nicht von lokal entfernt sind.

    git fetch -p 
    

    1

    Sie müssen nicht gespeicherte Änderungen festschreiben oder zerstören, bevor Sie den Zweig wechseln.

    Mit Git können Sie den Zweig nicht wechseln, wenn nicht gespeicherte Änderungen entfernt werden.


    Der Fehler und die git statusAusgabe zeigen an, dass dies nicht nur Änderungen im Arbeitsbaum sind, die durch Ändern des Zweigs verloren gehen würden. Sie zeigen an, dass eine Zusammenführung fehlgeschlagen ist und die Konflikte im Index gelöst werden müssen.
    Mark Longair

    1

    Da die Datei von beiden geändert wird, müssen Sie sie entweder von hinzufügen

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

    Oder wenn Sie Ihre Änderungen ignorieren möchten, dann tun Sie dies

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

    Danach wechseln Sie einfach Ihren Zweig. Dies sollte den Trick tun.

    Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
    Licensed under cc by-sa 3.0 with attribution required.