Тайна раскрыта. Я создал Project 2, скопировав множество файлов из Project 1, но три файла изображений оказались ссылками на файлы Project 1, а не копиями. Когда я удалил эти ссылки и добавил копии вместо Project 2, навигатор GIT перестал отображать репозиторий Project 1.
Сводка: Project 2 показывал оба GIT, потому что Project 2 ссылался на некоторые файлы в Project1.
Существует два способа решения проблемы:
A. Вручную : Откройте Project 2, выберите каждый файл (один за другим) и убедитесь, что полный путь, показанный в инспекторе Identity и Type, является путем Project 2. Исправьте все файлы, которые ссылаются на Проект 1.
B. Использование терминала : управляющий файл проекта XCode представляет собой текстовый файл, поэтому проверка всех полных путей может быть автоматизирована с помощью команд терминала, таким образом:
(я предполагаю, что два проекта называются Project_1 и Project_2и что их проектные папки совместно используют одну и ту же родительскую папку.)
Дублировать Project_2.xcodeproj
(который фактически является пакетом).
Изменитьсуффикс имени дубликата из .xcodeproj
(я использовал .xxx
). Дублированный «файл» становится подпапкой, содержащей четыре элемента, один из которых является текстовым файлом («project.pbxproj
»).
Запустить терминал.
В Терминале выполните «cd path_to_project_2_subfolder
». Ярлык: введите «cd
», пробел, перетащите папку, созданную на шаге 2, в «Терминал» и нажмите «Return».
x. (Шаг проверки.) В Терминале выполните «ls
», чтобы показать четыре элемента. Они должны быть:
project.pbxproj project.xcworkspace/ xcshareddata/ xcuserdata/
В Терминале выполните "
strings project.pbxproj | grep ../Project_1/
". Это показывает все строки в project.pbxproj, которые ссылаются на Project_1.
|
- это конвейерная команда, которая отправляет вывод
strings
в
grep
, который фильтрует строки. Поскольку два моих имени проекта отличались только одним символом, я окружил имя проекта '
../
' и '
/
', чтобы ограничить вывод каталогами и файлами, которые принадлежат Project_1, но вы можете просто использовать пустое имя проектаесли ваши два имени не похожи. Команды и аргументы чувствительны к регистру. Вы должны увидеть несколько строк, которые ссылаются на Project_1. Вы также можете открыть
project.pbxproj
в текстовом редакторе и искать строки, содержащие
Project_1
.
Один из моих файлов (shared.png) появился так:
1F4E32C32343DE1A0053C239 / * shared.png * / = {isa = PBXFileReference;lastKnownFileType = image.png;имя = совместное использование.png;путь = ../../../../Project_1/sharing.png;sourceTree = "";};
Откройте Project_2 в XCode и исправьте файлы, которые отображаются как ссылки в команде strings. Попутно используйте метод А (см. Выше) для проверки своей работы.
Убедитесь, что навигатор GIT показывает только Project 2. Возможно, вам придется закрыть Xcode и перезапустить.