Xcode: "Рабочая копия ____ имеет незафиксированные изменения" по сравнению с git статус: "ничего не зафиксировано, рабочий каталог чист"

В Xcode 5.0.2 я пытаюсь вытащить из удаленного и получил следующее сообщение:

"Рабочая имя" project-name "рабочей копии имеет незафиксированные изменения. Зафиксируйте или отмените изменения и повторите попытку."

Достаточно честный. Я вытаскиваю диалог фиксации, после чего мне присваивается сообщение: "Этот файл не существует в запрошенной ревизии". Нажатие "OK" приводит меня в диалог фиксации. (На правой панели не отображается ревизия, предположительно по той же причине, когда мне было дано последнее сообщение.) Выбрав плоское представление, я вижу, что есть только один измененный файл: project.pbxproj. Я ввожу сообщение о фиксации и нажимаю "Commit 1 File". Когда я иду, я обнаруживаю, что я нахожусь в том же положении, что и раньше, - появляются одни и те же сообщения, и я не могу тянуть (или нажимать) независимо от того, сколько раз я совершаю фиксацию.

Любопытно, я запускаю git diff, чтобы увидеть, что изменилось. Ничего. git status предоставляет мне одинаково полезный вывод: nothing to commit, working directory clean. git push или git pull? Да, они отлично работают из командной строки.

Итак, что дает? Почему Xcode настаивает на том, что у меня есть изменения в моем рабочем каталоге? Почему бы мне не сказать, что это такое? Попробовали перезапустить Xcode и систему. В то время как я рад, что у меня все еще есть способ нажать и потянуть, было бы очень приятно, если бы интеграция Xcode git вела себя хорошо. Любые идеи?

Я нашел эти подобные вопросы, но никто не затрагивает эту конкретную проблему (или не предоставляет приемлемого решения):

Ответ 1

Хорошо, поэтому я исправил свою проблему.

С открытием Xcode:

  • Открыть терминал - cd/в каталог проекта.
  • Введите: "git reset --hard"
  • Введите git status

Перезапустите Xcode и сделайте фиксацию (просто комментарий или что-то еще)

Повторите вышеуказанные шаги.

Это разобрало мою проблему для меня.

Ответ 2

Вы должны исправить это с помощью командной строки git. Перейдите в рабочую папку в терминале, введите:

git status

Это покажет вам, какие файлы имеют незафиксированные изменения. Например, Crashlytics обновит себя, как только вы запустите его, и даже с помощью Xcode/Source Control/Discard Changes не избавится от него.

Как только вы увидите файлы с незафиксированными изменениями (игнорируйте добавленные файлы), используйте:

git checkout -- Folder/filename.ext

То же, что и "отбрасывать" в Xcode.

После того, как вы это сделали, вернитесь к Xcode, и вы сможете переключать ветки.

Ответ 3

Решение App Code:

  • Подтвердить git статус в терминале:

    git статус

  • Откройте 'yourProject.xcworkspace' в Код приложения

  • VCS > git > Филиалы...

  • Удаленные ветки > yourBranch > Checkout как новая локальная ветвь

  • Подтвердить исправить через терминал:

    git статус

Ответ 4

xCode действительно очень дрянной. Каждый раз, когда вы просто смотрите на файлы, файл с именем UserInterfaceState.xcuserstate изменяется. Вы не увидите этого в обзоре самого xCode, через командную строку вы можете.

Быстрая починка:

  1. Открытый терминал
  2. CD в каталог вашего проекта и введите следующее:
  3. git add.
  4. git commit -m "Commit"
  5. git push origin master