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 Merged
→ pull
все еще не может пройти.
Когда я выбираю merge
, я получаю диалог
![enter image description here]()
Я не могу зафиксировать файл, поскольку он не находится в списке измененных файлов.
Ответы
Ответ 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.
- Team → Commit → Staged filelist, проверьте, существует ли ненужный файл, → щелкните правой кнопкой мыши на each-> удалить из индекса.
- В списке файлов 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. Теперь выберите "вытянуть изменения в текущей ветки" или "вытянуть изменения из восходящего потока".