Конфликт слияния Git с добавлением 500 файлов в локальном и исходном файлах

Я использую Git в Visual Studio и внезапно получил этот конфликт для всех файлов screenshot

Я могу щелкнуть каждый конфликт и выбрать «Взять источник», но, поскольку существует 534 конфликта, я бы предпочел выполнить пакетное разрешение в командной строке. Какими командами можно было бы разрешить все эти конфликты?


person Eivind Gussiås Løkseth    schedule 06.06.2014    source источник
comment
Они существенно отличаются?   -  person Anubian Noob    schedule 07.06.2014
comment
Я единственный разработчик в проекте, и несколькими часами ранее я внес два изменения. Затем Git внезапно думает, что в моей локальной ветке нет удаленных изменений, поэтому мне нужно вытащить все коммиты со дня создания ветки. Я должен сказать, что у меня нет большого опыта работы с Git, но до сих пор я создал несколько веток функций и синхронизировал изменения без проблем.   -  person Eivind Gussiås Løkseth    schedule 07.06.2014
comment
Все 500 конфликтов относятся к типу add / add, что означает, что Git считает, что одни и те же файлы добавляются как на локальном, так и на удаленном компьютере. Я думаю, что мне нужно выполнить пакетное разрешение, чтобы либо сохранить цель, либо взять исходные файлы для каждого конфликта. Я могу сделать это, щелкнув по каждому конфликту, но это займет много времени, поэтому я ищу команду, чтобы сделать это для всех конфликтов за одну операцию.   -  person Eivind Gussiås Løkseth    schedule 07.06.2014


Ответы (3)


Проверьте различия между конфликтами, о которых сообщает Visual Studio.

Возможно, они касаются только стиля eol (конец строки LF против CRLF)

Вы можете попробовать установить git config core.autocrlf true/false, чтобы увидеть, что будет работать лучше всего, но на этой странице вопросов / ответов упоминается, что Плагин Git, похоже, все равно не соблюдает этот параметр.


OP Eivind Gussiås Løkseth добавляет в комментариях:

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

Как упоминалось в разделе «Простой инструмент для« принятия их »или« принятия моего »для всего файла с помощью git», вы могли в корневой папке вашего репо выполните:

git checkout HEAD -- .
person VonC    schedule 07.06.2014
comment
Все конфликты относятся к типу add / add, что означает, что Git считает, что все файлы были недавно добавлены как локально, так и удаленно. Но это, очевидно, ошибка в инструментах. Я должен либо взять источник, либо сохранить цель для всех конфликтов. Файлы равны. Я ищу команду, чтобы сделать это для всех конфликтов за одну операцию, потому что выполнение этого для всех 500 конфликтов потребует много времени. - person Eivind Gussiås Løkseth; 07.06.2014
comment
@ EivindGussiåsLøkseth Хорошо, я добавил такую ​​команду, а также ссылку на вопрос, в котором подробно описывается эта команда. - person VonC; 07.06.2014
comment
Спасибо! Это была команда, которую я искал. Мне пришлось сделать git commit -m something ... чтобы зафиксировать слияние, и теперь все конфликты исчезли. - person Eivind Gussiås Løkseth; 07.06.2014

Мой совет в таком сценарии - создать третью ветвь и выполнить все слияние там, а затем заменить текущую ветку третьей веткой, если вы уверены, что слияние прошло, как ожидалось. Теперь, переходя к исходному вопросу, я не работал с Visual Studio, но предполагаю, что командная оболочка git в VS будет вести себя так же, как обычная командная оболочка git. Не могли бы вы описать, что вы пытаетесь сделать? Вы отслеживаете удаленную ветку, в которой вы внесли локальные изменения, и теперь извлекаете изменения, вызывающие конфликты? Или вы пытаетесь объединить две локальные ветки?

person Ashu Pachauri    schedule 06.06.2014
comment
Я объяснил немного больше в комментарии к вопросу. Я единственный разработчик в проекте. Я много синхронизировал изменения в ветке, прежде чем это внезапно произошло. Я не переключал свою локальную ветку, но теперь Git думает, что в моем локальном нет ни одной из коммитов на пульте дистанционного управления, поэтому мне нужно вытащить все, прежде чем я синхронизирую свои два последних коммита. Несмотря на то, что все файлы равны, у меня возникают конфликты слияния на 500 из них. К большинству из них я не прикасался несколько лет. - person Eivind Gussiås Løkseth; 07.06.2014

Я знаю, что это старое, но я оказался в такой же ситуации. Вот как я это решил:

  1. В ветке «объединить в» отмените / прервите объединение.
  2. Создавайте резервные копии конфликтующих файлов.
  3. Удалите все конфликтующие файлы (если они одинаковы в обеих ветках)
  4. Зафиксируйте изменение (удаление файлов)
  5. Сделать слияние
  6. Повторно добавить файлы Зафиксировать

И это должно сработать.

person mcse3010    schedule 14.09.2015