Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Eivind Gussiås LøksethОтветов: 3

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

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

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

gitvisual-studiogit-merge

Ответы

Ответ 1 · рейтинг 3 · VonC

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

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

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


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

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

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

git checkout HEAD -- .

Ответ 2 · Ashu Pachauri

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

Ответ 3 · mcse3010

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы