Подтвердить что ты не робот

Eclipse EGit Checkout конфликтует с файлами: - EGit не хочет продолжать

Я запустил Eclipse EGit. В некоторых сценариях это не является исчерпывающим.

У меня есть локальный файл, например. Изменен pom.xml. На сервере git этот файл был изменен. Я делаю pull, EGIt говорит:

Контроверка с файлами:

то есть. (fetch выполняется, но не merge), это нормально. Однако следующий плохой опыт.

Я синхронизирую рабочую область, откладываю свои изменения и делаю ее такой же, как FETCH_HEAD. Но EGit не хочет продолжать. Я заменяю файл ревизией HEAD. Но EGit по-прежнему не хочет продолжать.

Какая стандартная ожидаемая работа пользователя должна быть с EGit после разрешения конфликта?

UPDATE:

I added to index, то marked as Mergedpull все еще не может пройти.
Когда я выбираю merge, я получаю диалог

enter image description here

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

4b9b3361

Ответ 1

Ситуация:

  • У вас есть локальные нефиксированные изменения.
  • Вы извлекаете из мастер-репо
  • Вы получаете сообщение об ошибке "Конфликт с файлами: xy"

Решение:

  • Сцена и фиксация (по крайней мере) файлов xy
  • Потяните снова
  • Если автосервис возможен, все в порядке.
  • Если нет, то притяжение объединяет файлы и вставляет маркеры слияния-конфликта (< < < <, → → )
    • Вручную редактировать конфликтующие файлы
  • Зафиксировать и нажать

Ответ 2

Так я решил свою проблему:

  • Щелкните правой кнопкой мыши папку с незафиксированными изменениями на локальном
  • Выберите команду > Дополнительно > Предположите без изменений
  • Pull от мастера.

UPDATE:

Как Hugo Zuleta правильно указал, вы должны быть осторожны при применении этого. Он говорит, что может показаться, что ветка обновлена, но изменения не отображаются, в результате чего происходит удаление из ветки.

Ответ 3

  • После закрытия диалогового окна Conflict Error; из Project Explorer, щелкните правой кнопкой мыши на главном проекте → Team → Stashes → Stash Changes
  • Введите имя для вашего кошелька. НАПРИМЕР. "Конфликт"
  • Попробуйте снова вытащить. Надеемся, на этот раз ошибок нет.
  • В представлении Git Репозиторий разверните свой репозиторий → Stashed Commits
  • Щелкните правой кнопкой мыши на кошельке, который вы создали на шаге 2 → Применить отмеченные изменения
  • Это вызывает инструмент слияния, если он не может автоматически объединить его.
  • Вручную разрешить конфликты слияния в файле /s.
  • Щелкните правой кнопкой мыши на редакторе файлов → Команда → Добавить в список
  • Если вы не готовы зафиксировать файл или просто не хотите его в индексе, щелкните правой кнопкой мыши на редакторе файлов → Team → Remove from Index.
  • Очистка: в представлении хранилища Git щелкните правой кнопкой мыши на сохранении, которое вы создали на шаге 2 → Удалить штампованное сообщение

Ваш локальный файл рабочего каталога должен быть объединен

Ответ 4

Если ошибка возникает для ".settings/language.settings.xml" или любого такого файла, вам не нужно использовать git.

  1. Team → Commit → Staged filelist, проверьте, существует ли ненужный файл, → щелкните правой кнопкой мыши на each-> удалить из индекса.
  2. В списке файлов UnStaged проверьте, существует ли ненужный файл, → щелкните правой кнопкой мыши each-> Игнорировать.

Теперь, если Staged file list пуст, а Unstaged file list, все файлы помечаются как игнорируемые. Вы можете тянуть. В противном случае следуйте другим ответам.

Ответ 5

Я думаю, лучший способ сделать это:

  • Сохраните все ваши изменения в отдельной ветке.
  • Затем сделайте жесткий reset на локальном хозяине.
  • Затем объедините свои изменения с локально созданной веткой
  • Затем зафиксируйте и нажмите свои изменения.

То, как я решаю мое, всякий раз, когда это происходит.

Ответ 6

После того, как вы получите от Eclipse уродливое исключение CheckoutConflictException, кнопка Eclipse-Merge Tool будет отключена.

Git нужно добавить все ваши файлы в индекс для включения слияния.

Итак, чтобы объединить ваши изменения и зафиксировать их, вам нужно сначала добавить свои файлы в индекс "Добавить в индекс" и "зафиксировать" их без "Push". Затем вы должны увидеть один ожидающий пул и один ожидающий пуш-запрос в Eclipse. Вы видите это в одной стрелке вверх и одной стрелке вниз.

Если все конфликтующие файлы находятся в коммите, вы можете снова "вытащить". Тогда вы увидите что-то вроде:

\<<<<<<HEAD Server Version\======= Локальная версия>>>>>>> ветка 'master' of.... git

Затем вы можете либо изменить его с помощью Merge-Tool, который теперь включен, либо просто выполнить слияние вручную непосредственно в файле. На последнем шаге вы должны снова добавить измененные файлы в индекс и "зафиксировать и нажать" их.

Проверка сделана!

Ответ 7

Правильное решение предоставлено @Jojo.Lechelt.

Однако, если вы не хотите фиксировать по какой-либо причине и по-прежнему хотите получить изменения, вы можете сохранить свои изменения в другом месте, заменить конфликтующий файл ревизией HEAD, а затем извлечь.

Позже вы можете снова вставить свои изменения и сравнить их с HEAD и включить изменения других людей в ваш файл.

Ответ 8

Щелкните правой кнопкой мыши по проекту и выберите [заменить на] → Head Revision. Теперь выберите "вытянуть изменения в текущей ветки" или "вытянуть изменения из восходящего потока".