Почему я не могу переключать ветки? - PullRequest
75 голосов
/ 14 мая 2011

Я пытаюсь переключить ветки в git, но получаю это сообщение об ошибке:

error: you need to resolve your current index first

Я использую git под 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

Ответы [ 7 ]

90 голосов
/ 29 июля 2015

Попробуйте, если вы не хотите, чтобы какие-либо слияния были перечислены в состоянии git:

git reset --merge

Это сбрасывает индекс и обновляет файлы в рабочем дереве, которые отличаются между <commit> и HEAD, но сохраняет те, которые отличаются между индексом и рабочим деревом (т. Е. С изменениями, которые не были добавлены).

Если файл, отличающийся между <commit> и индексом, имеет неизмененные изменения- сброс отменен.

Подробнее об этом - https://www.techpurohit.com/list-some-useful-git-commands & ссылка на документацию - https://git -scm.com / docs / git-reset

53 голосов
/ 14 мая 2011

В результате вы получите both modified в выводе git status, если в результате слияния возникли конфликты.git не позволяет вам сменить ветку, пока вы не разрешите эти конфликты.Если вы отредактируете этот файл, вы увидите в нем некоторые маркеры конфликтов - руководство по разрешению этих конфликтов * .(Поскольку kernel.org в данный момент не работает, вы можете найти это руководство здесь .)

В качестве альтернативы, если вы считаете, что слияние было ошибкой, вы можете отменить его с помощью: git reset --merge

15 голосов
/ 19 мая 2017

Если вас не волнуют изменения, которые git называет выдающимися, вы можете выполнить принудительную проверку.

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

6 голосов
/ 27 мая 2015

вы можете сбросить ветку с помощью HEAD

git reset --hard branch_name

, затем извлекать ветки и удалять ветки, которые не находятся на удаленном компьютере,

git fetch -p 
5 голосов
/ 21 января 2013

Я получил это сообщение при обновлении новых файлов с удаленного компьютера, и индекс вышел из строя.Попытка исправить индекс, но разрешение с помощью Xcode 4.5, GitHub.app (103) и GitX.app (0.7.1) не удалось.Итак, я сделал это:

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

, который работал в обход индекса git.

Два сообщения в блоге, которые помогли мне понять о Git и Xcode:на Xcode 4.5 и

Оливер Стил с 2008 года
1 голос
/ 24 декабря 2015

Поскольку файл модифицируется обоими, либо вам нужно добавить его

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

Или, если вы хотите игнорировать изменения в yoyr, выполните

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

После этого просто поменяйте ветку. Это должно сработать.

1 голос
/ 14 мая 2011

Вам необходимо зафиксировать или уничтожить все несохраненные изменения, прежде чем переключать ветку.

Git не позволит вам переключить ветку, если это означает, что несохраненные изменения будут удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...