Ответ 1
У Xcode есть проблемы с файлами xcuserdata, и мне пришлось отменить изменения и повторно подтвердить
У нас есть проект на основе git с дочерней и одной главной ветвью. Он внес некоторые изменения в некоторые файлы, я внес изменения в некоторые другие файлы, и мы, скорее всего, сделали изменения в несколько файлов. Он совершил и перебросил все свои изменения в репо. Затем я пошел и совершил свои изменения и попытался вытащить его изменения. Мне было представлено несколько конфликтов, которые я в основном решал в пользу его изменений, потому что они были файлами, которые я не изменил. Затем, когда я попытался нажать, я получил фатальный характер: не могу выполнить частичную фиксацию во время слияния.
Это экраны, которые я получаю.
Что я могу сделать? Проект отлично работает, за исключением того, что в главном меню игры не отображаются изображения, на которые он должен был работать, и те, над которыми он работал, и файлы классов, над которыми он работал, кроме нескольких других.
У Xcode есть проблемы с файлами xcuserdata, и мне пришлось отменить изменения и повторно подтвердить
Это обычная расстраивающая ситуация:
mv .git/MERGE_HEAD .git/MERGE_HEAD_STUCK
Ваша проблема должна быть решена наполовину, в некоторых случаях вам нужно сделать отрыв от организатора:
Затем вы можете снова использовать Git из Xcode, вам, вероятно, придется разрешать некоторые конфликты слияния, но по крайней мере это будет под Xcode, а не на терминале.
Примечание. Рассмотрим удаление .DS_Stores из репозитория Git
Вы не можете зафиксировать, пока не будут разрешены все конфликты слияния. На основании того, что вы описали, есть файлы, которые вы оба изменили. Это конфликты, которые вы должны решить.
Я никогда не разрешал конфликт в Xcode. Вы всегда можете разрешить конфликт из приложения Terminal. Как только вы подключитесь к терминалу и предположите, что вы установили инструменты командной строки Xcode, выполните следующие действия:
git mergetool
git commit
Это будет/должно появиться окно FileMerge, которое позволит вам выбрать его или его редактирование. Другой вариант, который у вас есть на Терминале, - это разрешить конфликты, просто приняв его изменения. Это сломает ваш код, но вы можете вернуться и исправить его. Для этого попробуйте:
git status
git checkout --theirs -- /path/to/a/conflicted/file ...
git add -- /path/to/a/conflicted/file ...
git commit
Затем отредактируйте файлы, чтобы исправить свои функциональные возможности. После того, как все конфликты будут разрешены, вы сможете совершить возврат в Xcode.
Откройте терминал и используйте следующее:
Чтобы определить, какие файлы имеют конфликты: git status
Выполнять слияние и исправление конфликтов git mergetool
Вам может потребоваться добавить некоторые невоспроизводимые файлы: git add .
Наконец, совершите изменения git commit
Когда у меня возникают проблемы с XCode, я просто возвращаюсь к AppCode (пробная версия, если вам нужно), и делаю фиксацию из папки проекта верхнего уровня.
AppCode обнаруживает сценарий слияния и сортирует проблему с частичным Merge. Аналогично, если AppCode не может его отсортировать, я использую Github Desktop. Только если все это не удается, я вернусь к командам низкого уровня.
Я решил это с совершенно другим подходом, используя только Xcode Source Control.
Справочная информация. Другая команда. Внесены изменения в удаленный репозиторий Git (через Beanstalk). На моем конце файлы .xcodeproj вошли в другой каталог, и изменений не потребовалось. Позже, когда я попытался зафиксировать, я получил ошибку "Конфликт дерева" в Xcode.
Скриншот сценария дерева
Практически невозможно исправить использование Xcode, я заменил файл .xcodeproj на загруженную версию с сервера Git. В результате... проект Xcode, похоже, прояснился, однако все обновления от коррумпированного Pull появлялись как изменения, которые я сделал, и были поставлены для Commit. Посмотрите на все эти Моды и Добавленные файлы Однако при попытке Commit я получил тот же самый "фатальный: не могу выполнить частичную фиксацию во время слияния", обсуждаемый здесь.
Вот как я решил проблему... (Теперь поймите, что я новичок-программист, поэтому мне не хватало некоторого понимания... но мое невежество заставило меня найти другой способ сделать это.) Во-первых, я Клонировал мой мастер Ветвь во вторичный филиал и переключился на эту ветку. Затем я создал рабочую копию и поместил каталог в эту рабочую копию за пределы исходного каталога проекта. (Я не знаю, было ли это необходимо, но это то, что я сделал, когда читал другие методы устранения неполадок.) Затем я переключил ветки на мастера, где понял, что все мои файлы в Staged (изменения в Commit) исчезли. Чтобы убедиться, что все файлы были обновлены до последних изменений, сделанных другой стороной, я создал новую ветвь с именем ThirdBranch, которая дублировала все файлы, выталкивала ее на сервер Git и позволяла Beanstalk сравнивать мою версию сервера главной ветки к ветке ThirdBrach я просто нажал (строка за строкой), и все изменения другой стороны присутствовали на моем Xcode. Это означало, что мой главный репозиторий и главный репозиторий Git были одинаковыми, что подтверждает, что я решил проблему, используя только Xcode.
Не спрашивайте меня, как, помимо того, что я только что описал... и, конечно, восполняю недостатки, которые я забыл. Я новичок в этом, и я не все понимаю. Может быть, опытный программист может отделить нерелевантную информацию от релевантной и более четко воссоздать эту технику, отчасти потому, что я публикую это.
В новых версиях Xcode вы увидите предупреждающий символ в корне вашей иерархии управления версиями. Нажмите это, и вы увидите приглашение прекратить слияние.