Что Git сделал с моим исходным кодом? - PullRequest
2 голосов
/ 30 августа 2010

Как мне исправить следующее?

<<<<<<< HEAD
<<<<<<< HEAD
-(int)existsMedia:(NSNumber*)mediaId {
 NSFetchRequest *request = [[NSFetchRequest alloc] init];
 NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"mediaId == %@", mediaId]];
=======
-(int)existsMedia:(NSNumber*)mediaMessageId {
 NSFetchRequest *request = [[NSFetchRequest alloc] init];
 NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"messageId == %@", mediaMessageId]];
>>>>>>> dc244e93b3e351ab6dce5785e1f2b686305a0051
=======
-(int)existsMedia:(NSNumber*)mediaMessageId {
 NSFetchRequest *request = [[NSFetchRequest alloc] init];
 NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"messageId == %@", mediaMessageId]];
>>>>>>> parent of 4a5c497... Bug Hunting for Media Support
 NSEntityDescription *entity = [NSEntityDescription entityForName:@"ELMMedia" inManagedObjectContext:managedObjectContext];
 [request setEntity:entity];
 [request setPredicate:predicate];
 NSError *error;
 NSUInteger count = [managedObjectContext countForFetchRequest:request error:&error];

 [request release];

Собственно, да, произошло слияние.Но я не знаю почему.Можно ли получить мой правильный коммит в 00:25?

alt text

Ответы [ 3 ]

2 голосов
/ 30 августа 2010

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

Редактирование файлов разрешает слияние, сохраняет и фиксирует их.

Дополнительная информация:


Редактировать

Вы говорите, что не выполняли слияние, но git pull включает слияние: на основе вашего дерева похоже, что вы внесли изменения вваш локальный репозиторий с использованием устаревшей копии.Когда вы извлекли удаленное хранилище, оно инициировало слияние.

Разрешение слияния - это просто вопрос редактирования файлов в соответствии с вашими желаниями и повторная фиксация. Это стандартная часть SCM.

1 голос
/ 30 августа 2010

Ваша проблема в том, что вы отправили коммит в ваш удаленный репозиторий, затем локально изменили его, сделали другой коммит и затем извлекли.

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

Предполагая, что вы этого не сделали (или не хотите иметь)любые локальные изменения и что вы хотите, чтобы ваш последний реальный коммит («Поиск ошибок для поддержки медиа») был главой главной ветки, вы можете отменить попытку слияния следующим образом.

Я не на 100%уверен в вашей диаграмме, я считаю, что это означает, что вы пытаетесь выполнить слияние, но еще не сделали коммит слияния.Если это так, запустите это (предупреждаем, это отбрасывает локальные изменения):

git reset --hard

Если вы совершили слияние (то есть «-» на самом деле является сообщением фиксации), то вам нужно будет запустить git reset --hard HEAD^вместо этого.

После этого ваш локальный мастер должен быть на старом коммите.

Если это успешно, для того, чтобы исправить ваш удаленный репозиторий, вам нужно будет force толчок.(Обычно не рекомендуется, но, поскольку вы говорите, что вы единственный, кто использует ваш репозиторий, все в порядке.)

Вам следует попробовать это:

git push -f origin master

Еслиэто не работает (например, если на пульте установлен denyNonFastForward), вам придется прибегнуть к альтернативным средствам.Смотрите здесь , чтобы узнать, как обойти это.

1 голос
/ 30 августа 2010

Выполнить git mergetool (при условии, что вы установили инструмент mergetool в .gitconfig). Он запустит любой инструмент, который вы хотите решить проблему.

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