Github - как решать конфликты - PullRequest
4 голосов
/ 30 ноября 2011

Мой друг и я пытаемся работать над проектом iPhone, но у нас проблема с управлением конфликтами версий с помощью github.

Пример: мы оба работаем над определенной строкой кода с помощью xCode 4.2 (и клиента github mac)

int majorVersion = 0;

1) Он меняет код на int majorVersion = 999; фиксирует изменения; синхронизация - без проблем, в конечном итоге в github

2) Одновременно я изменяю код на int majorVersion = 666;, затем:

  • Я фиксирую изменения
  • конфликт - я выбираю определенную версию, выбирая строку кода (int majorVersion = 666;)
  • в xCode я удаляю смешные <<<<<< биты HEAD (так что остается только <code>int majorVersion = 666;)
  • зафиксировать изменения
  • окончательно: Я пытаюсь опубликовать ветку, но получаю следующую ошибку:

ошибка: невозможно отправить в неквалифицированное место назначения: HEAD Место назначения refspec не соответствует существующему ref на пульте и не начинается с refs /, и мы не можем угадать префикс на основе исходного ref. ошибка: не удалось отправить некоторые ссылки на «https://github.com/XXX/XXX.git'

Что мы делаем не так? Является ли основной проблемой то, что я удалил забавное <<<<< и объявление HEAD в xCode (см. Скриншот ниже)? Как мы должны решать такие конфликты? </p>

enter image description here

1 Ответ

1 голос
/ 30 ноября 2011

В настоящее время нет ни на одной ветке.нечего фиксировать (рабочий каталог очищен)
(как видно из в этом примере )

Это означает, что вы находитесь в DETACHED HEAD и разрешениях(git log, git reflog, ...) упоминаются в " В настоящее время нет ни в одной ветви + git commit + checkout, когда нет ни в одной ветви. Потерял ли я свои изменения? ".

Проблема не в параллельной модификации сама по себе, а в том, как вы сначала извлекли свой код в XCode4: любая проверка тега или SHA1 может привести к ситуации с отсоединенной головкой.

См.также разрешение, предложенное в " Git Checkout, вернул код к более старой фиксации, как вернуть обратно? ".

...