2013-08-05 3 views
34

Я запустил Eclipse EGit. В некоторых сценариях это не является исчерпывающим.Eclipse EGit Checkout конфликтует с файлами: - EGit не хочет продолжать

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

Checkout конфликт с файлами:

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

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

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

UPDATE:

I added to index, то marked as Merged ->pull до сих пор не может пройти.
Когда я выбираю Merge я получаю диалоговый

enter image description here

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

+2

Вы сделали «Добавить в индекс» через контекстное меню, которое является чем-то вроде «mark as merged», известного из CVS/SVN? И после этого я думаю, что вам нужно сделать фиксацию, которая выполняет слияние (afaik), когда вы «сменили», или если вы «перезагрузили», вы должны сделать «Rebase> continue» вместо того, чтобы совершать транзакции, которая выполняет фиксацию в настоящий момент сливается и сворачивает следующий, если есть еще больше обязательств по переустановке. –

+0

Я не могу просто выйти из состояния. Я ошибался, и EGit не помогает выйти. –

+0

Да, хорошо, что диалог является одним из моих фаворитов - нет;) Просто выберите любой вариант, так как я не уверен, имеет ли это значение. Но потом зафиксируйте файл, а затем сделайте притяжение. Это решение проблемы? Потому что тогда вы должны иметь возможность разрешать конфликты с помощью инструмента слияния и не видеть этот диалог. –

ответ

41

Ситуация:

  • У вас есть местные неподтвержденные изменения
  • Вы тянете из главного репозитория
  • Вы получаете ошибку "Checkout конфликт с файлами: ху"

Решение:

  • Stage и совершить (по крайней мере) файлы ху
  • Пулл снова
  • Если automerge возможно, все в порядке.
  • Если нет, то тянуть объединяет файлы и вставляет маркеры слияния-конфликтные (< < < < < <, >>>>)
    • вручную редактировать конфликтующие файлы
  • COMMIT и толкать
23

Это путь я решил мою проблему:

  1. правой кнопкой мыши папку, которая содержит неподтвержденные изменения на локальном
  2. Click Team> Дополнительно> Предположим Unchanged
  3. Pull от мастера.

UPDATE:

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

+0

Удивительный. Это сработало. –

+1

Рад, что это помогло. :) –

+1

Приходится быть осторожным, используя это. В конце концов, можно сказать, что ветка обновлена, но изменения не отображаются, в результате чего происходит удаление из ветки. –

13
  1. После закрытия диалогового окна Conflict Error; из Project Explorer, щелкните правой кнопкой мыши на голове проекта -> Team -> Stashes -> Stash Changes
  2. Введите имя для вашего кошелька. НАПРИМЕР. "Conflict"
  3. Попробуйте снова вытащить. Надеюсь, на этот раз ошибок нет.
  4. С точки зрения Git репозиториев, расширить хранилище -> припрятал Подтверждает
  5. Щелкните правой кнопкой мыши на тайник, созданный на шаге 2 -> Применить изменения спрятанных
  6. Это поднимает инструмент слияния, если он не может автоматически объединять Это.
  7. Вручную разрешить конфликты слияния в файле/с.
  8. Щелкните правой кнопкой мыши на редакторе файлов -> Команда -> Добавить в список указателей
  9. Если вы не готовы зафиксировать файл или просто не хотите его в индексе, щелкните правой кнопкой мыши на редакторе файлов -> Team - > Удалить из индекса.
  10. Очистка: С точки зрения Git Repository Щелкните правой клавишей мыши на тайник, созданный на шаге 2 -> Удалить спрятанных Commit

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

+1

после шага 5, у меня только что появилось сообщение: Возникла проблема: Применить изменения из stashed commit '......' возникла проблема. Применение закрытого фиксации «....» не выполнено из-за «применения спряженных изменений, вызванных конфликтом» Какой бесполезный инструмент .... никаких диалогов слияния вообще не существует. просто глупые сообщения. – razor

0

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

  1. Сохраните все ваши изменения в отдельной ветке.
  2. Затем выполните жесткий сброс локального мастера.
  3. Затем объедините обратно свои изменения из локально созданного ответвления
  4. Затем зафиксируйте и нажмите свои изменения.

Это как я решаю шахту, когда это происходит.