Xcode 4 Git - «Этот файл не существует в запрошенной ревизии» - PullRequest
16 голосов
/ 18 августа 2011

У меня есть локальный git-репозиторий, который я настроил с проектом в Xcode 4. Хранилище прекрасно отображается в Организаторе, и я вижу истории фиксации и значки Source Control в File Navigator. Комитс работает нормально. Однако, когда я использую редактор версий, я получаю сообщение об ошибке «Этот файл не существует в запрошенной ревизии» всякий раз, когда я пытаюсь просмотреть любую предыдущую ревизию. Я не могу найти информацию об этой ошибке и понятия не имею, как ее исправить. git log показывает четыре последних коммита (я знаю, что их больше, но я не знаю, является ли это ограничением команды или что-то исчезает). Есть идеи?

Ответы [ 15 ]

15 голосов
/ 20 декабря 2011

Я только что столкнулся с этой же проблемой.Я думаю (в любом случае, в моем случае), что это было связано с тем, что я перенес каталог проекта за пределы xcode.Я полагаю, что xcode где-то кэшировал некоторые индексные файлы в ~ / Library.Похоже, они запутались в результате переезда.

Исправление (для меня) состояло в том, чтобы открыть xcode, открыть панель органайзера-> проектов и найти проект, о котором идет речь.Удалите производные данные (для этого есть кнопка в правом верхнем углу).

После этого все выглядело нормально.

9 голосов
/ 28 марта 2012

Это помогло мне:

  1. Перейти к XCode -> Органайзер -> Хранилища
  2. Удалить все репозитории с именем, написанным красным (т. Е. Файл не найден)
  3. Нажмите кнопку «+» в левом нижнем углу -> «Добавить репозиторий ...»
  4. Введите запрашиваемую информацию: Path = file://....<full path, which contains the .git directory>. Убедитесь, что для Типа установлено значение «Git», Xcode изменил его на «Subversion», игнорируйте сообщение «Требуется аутентификация»
  5. Выполнено
3 голосов
/ 17 сентября 2012

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

1 голос
/ 09 сентября 2013

Моя проблема и решение были просты:

  • Я создал папку, myProj
  • Я создал проект Xcode MyProj внутри этой папки
  • Это дало мне структуру, которая выглядела как myProj / MyProj / MyProj /
  • Мне не понравился этот дополнительный уровень папки, поэтому я переместил внутренний MyProj под myProj
  • Отслеживание Xcode-репозитория обескуражено

Решение:

  • Откройте органайзер для репозиториев и удалите репозиторий «MyProj» в верхнем регистре, который был выделен красным. Xcode обнаружил новое местоположение хранилища в «myProj» и возобновил отслеживание вещей в обычном режиме.
1 голос
/ 23 февраля 2013

В моем случае оказалось, что эта проблема связана с тем фактом, что я переименовал множество файлов в моем хранилище из «CamelCase» в «нижний регистр», включая файл и папку моего проекта. Это должно быть где-то каким-то образом неправильно отслежено.

OS X использует нечувствительную к регистру файловую систему по умолчанию, тогда как git внутренне чувствителен к регистру, и я считаю, что проблема как-то связана с этим.

Это шаги, которые я использовал, чтобы исправить это. Если вы считаете, что ваша проблема может быть связана с изменением регистра имен файлов, это также может вам помочь.

  1. Перейдите в корень вашего репозитория и удалите из него все, кроме папки .git, с помощью команд "ls -la" (чтобы увидеть также все скрытые файлы) и "rm" / "rm -rf".
  2. Сделайте git reset --hard, чтобы вернуть все ваши файлы. Теперь вы можете видеть, что регистр ваших имен файлов изменился. В моем случае в корне моей рабочей копии «myapp.xcodeproj» и «myapp» (папка, содержащая все файлы кода) были изменены на «MyApp.xcodeproj» и «MyApp» (папка). Я думал, что изменил его на строчные, но, очевидно, это не было правильно отслежено git.
  3. Теперь переименуйте ваши файлы во что-то не связанное. Например, я переименовал «MyApp.xcodeproj» в «foo.xcodeproj» и «MyApp» в «foo».
  4. Затем выполните "git add --all"
  5. Теперь переименуйте ваши файлы в то, что вы хотите. Я переименовал «foo.xcodeproj» в «myapp.xcodeproj», а «foo» - в «myapp», именно так я и хотел с самого начала (и я думал, что уже сделал).
  6. Сделайте еще один "git add --all".
  7. Commit.

Теперь ваша жизнь должна стать лучше, и Xcode должен вести себя хорошо, потому что git теперь видит те же файлы (с точно таким же регистром), что и проект Xcode.

1 голос
/ 24 января 2012

Полагаю, это одна из проблем, которая может быть вызвана множеством проблем.Это моё и как я это решил.

В моем проекте произошли некоторые изменения имени файловой системы.А именно, переход от всех нижних колпачков к корпусу Паскаля.Это было отклонено в какой-то момент во время моего цикла кодирования.Когда я зарегистрировался, файловая система была:

mydirectoryname

Все файлы в mydirectoryname больше не управлялись git в Xcode.При просмотре в редакторе версий у меня появилось сообщение об ошибке «Этот файл не существует в запрошенной версии».

Однако, если я выбрал один из файлов и щелкнул «Инспектор файлов» (доступен на панели «Утилиты»), я заметил, что полный путь к файлу был указан как

1012 *MyRootPath/MyDirectoryName/TheCodeFile.h

Я закрыл Xcode, открыл файл .pbxproj в редакторе, исправил путь и снова открыл проект.Интеграция с Git снова работает.

0 голосов
/ 01 сентября 2015

Я получил то же сообщение после создания и переименования нового файла.Это сообщение появилось, когда я выбрал файл в окне коммита Git.Удаление и повторное добавление файла устранило проблему.

0 голосов
/ 12 июня 2014

Это древняя тема, но так как правильный ответ так и не был найден, я добавлю свои 2 цента.

Одной из причин этой ошибки могут быть неотслеживаемые файлы, в частности субмодуль или файлы, которых нет в текущей ветке, но в предыдущей.

Например, при переключенииветке с подмодулем и обновлению такого подмодуля, он синхронизирует эти файлы с вашим репозиторием.Когда вы позже переключитесь на ветку, у которой нет такого подмодуля, он не будет добавлять или удалять их автоматически, но git поймет, что что-то не отслеживается в ветке.XCode также обнаруживает это всякий раз, когда вы переключаетесь в любой из режимов редактора версий: журнал, обвинение или сравнение.

В этом случае приглашение состояния git выдаст неотслеживаемые файлы:

  On branch master
  Your branch is up-to-date with 'origin/master'.

  Untracked files:
    (use "git add <file>..." to include in what will be committed)

    yourSubmodule/

  nothing added to commit but untracked files present (use "git add" to track)

Чтобы исправить это, вы можете просто удалить неотслеживаемые файлы с помощью rm , поскольку эти файлы не принадлежат этой ветви и могут быть синхронизированы из ветви, которая фактически указывает на подмодуль.Обратите внимание, что это относится к подмодулю, но если у вас есть новые файлы, вы должны вместо этого добавить их в хранилище или, альтернативно, добавить их в список игнорирования.После исправления проблемы состояние git должно быть чистым:

  On branch master
  Your branch is up-to-date with 'origin/master'.

  nothing to commit, working directory clean

Читайте о подмодулях и проблем с их использованием .

Cheers!

0 голосов
/ 14 ноября 2012

У меня была эта проблема - я решил ее следующим образом: удалите репозиторий в органайзере

Терминал в проекте dir

ls -A - шек для файлов репозитория .git - не должен быть любым -но если есть rm -R .git

, тогда настройте новый git repo

git init git add.git commit -m "initial rev"

затем при повторном открытии xcode - проект находится под контролем исходного кода git

0 голосов
/ 08 марта 2012

Была такая же проблема.
Решена путем выбора проекта на странице «Проекты» в Организаторе и удаления данных «Производные данные» и «Снимки» нажатием кнопок «Удалить ...» для этих полей.
После этого новый снимок может быть успешно создан и экспортирован при необходимости.

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