Dlaczego nie mogę zmienić gałęzi?

81

Próbuję zmienić gałęzie w git, ale pojawia się ten komunikat o błędzie:

error: you need to resolve your current index first

Używam git pod 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
klosz
źródło
# Niespołączone ścieżki: # (użyj "git reset HEAD <file> ..." do unstage) # (użyj "git add / rm <file> ...", aby zaznaczyć rozdzielczość) #
lampShade
edytuj swoje pytanie, aby wkleić te informacje, nie można ich odczytać w komentarzach.
Mat
git reset {{currentBranchName}}to git checkout . rozwiąże twój problem
muthukumar selvaraj
Czy to odpowiada na twoje pytanie? Błędy scalania Git
Henke,

Odpowiedzi:

96

Spróbuj tego, jeśli nie chcesz żadnych połączeń wymienionych w statusie git:

git reset --merge

Spowoduje to zresetowanie indeksu i zaktualizowanie plików w drzewie roboczym, które są różne od <commit>i HEAD, ale zachowa te, które są różne w indeksie i drzewie roboczym (tj. Takie, które mają zmiany, które nie zostały dodane).

Jeśli plik, który jest inny, <commit>a indeks ma niestabilne zmiany - resetowanie jest przerywane.

Więcej na ten temat - https://www.techpurohit.com/list-some-useful-git-commands & Doc link - https://git-scm.com/docs/git-reset

jitendrapurohit
źródło
53

Kończysz z both modifiedwynikiem, git statusjeśli wystąpiły konflikty wywołane przez scalanie. git nie pozwala ci zmienić gałęzi, dopóki nie rozwiążesz tych konfliktów. Jeśli edytujesz ten plik, powinieneś zobaczyć w nim kilka znaczników konfliktów - przewodnik dotyczący rozwiązywania tych konfliktów znajduje się w podręczniku git . (Ponieważ kernel.org jest obecnie niedostępny, możesz znaleźć ten przewodnik tutaj .)

Alternatywnie, jeśli uważasz, że scalanie było błędem, możesz je cofnąć za pomocą: git reset --merge

Mark Longair
źródło
19

Jeśli nie dbasz o zmiany, które według gita są wyjątkowe, możesz wykonać wymuszone sprawdzenie.

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

jyapx
źródło
3
To było dokładnie to, czego potrzebowałem - miałem gałąź testową, w której scalanie nie powiodło się z wieloma konfliktami i chciałem po prostu wyrzucić gałąź. Nie udało mi się wrócić do dobrego oddziału (nieudana realizacja transakcji, a git reset --mergetakże niepowodzenie). Ale checkout -fdziałało świetnie.
Czad
6

Otrzymałem tę wiadomość podczas aktualizacji nowych plików z pilota i indeksu nie udało się. Próbowano naprawić indeks, ale nie udało się rozwiązać za pomocą Xcode 4.5, GitHub.app (103) i GitX.app (0.7.1). Więc zrobiłem to:

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

który działał w omijaniu indeksu git.

Dwa posty na blogu, które pomogły mi zrozumieć Git i Xcode to:

  • Ray Wenderlich na Xcode 4.5 i
  • Oliver Steele z 2008 roku


  • źródło
    6

    możesz zresetować swoją gałąź za pomocą HEAD

    git reset --hard branch_name
    

    następnie pobierz gałęzie i usuń gałęzie, które nie są odległe od lokalnych,

    git fetch -p 
    
    Deepika Patel
    źródło
    1

    Musisz zatwierdzić lub zniszczyć wszelkie niezapisane zmiany, zanim zmienisz gałąź.

    Git nie pozwoli ci zmienić gałęzi, jeśli oznacza to, że niezapisane zmiany zostaną usunięte.

    Andrea
    źródło
    Błąd i dane git statuswyjściowe wskazują, że nie chodzi tylko o zmiany w drzewie roboczym, które zostałyby utracone w wyniku zmiany gałęzi - wskazują one, że scalanie nie powiodło się i konflikty muszą zostać rozwiązane w indeksie.
    Mark Longair
    1

    Ponieważ plik jest modyfikowany przez oba, musisz go dodać przez

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

    Lub jeśli chcesz zignorować zmiany wprowadzone w ciągu roku, zrób to

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

    Po tym wystarczy zmienić gałąź - to powinno załatwić sprawę.

    Koshik Raj
    źródło