Eclipse EGit отменяет изменения при слиянии - PullRequest
0 голосов
/ 11 мая 2018

Я собирался опубликовать это на этом ТАКом вопросе.Потому что это первый, который появляется в Google.Но я подумал, что лучше написать этот вопрос как новый вопрос (в конце концов, это не форум).

Сначала я покажу вам эту картинку, чтобы получить представление о состоянии веток (очевидно, реальные сообщения коммитов былизаменено на конфиденциальность):

commit nightmare

Итак, после отслеживания каждого коммита я обнаружил, что виновным было последнее слияние, выполненное моим коллегой (тот, что сверху).Тем не менее, я не могу понять, как все могло пойти не так. Все изменения между большим коммитом и файлом с конфликтующими файлами были потеряны.

Как вы могли заметить, зеленая линия представляет локальную ветку моего коллеги, оранжевый / коричневый исправлениеветка и синий мой.

Итак, после того, как я разрешил конфликты на cb2ff5f , я объединил изменения ветви исправлений, а затем обновил номер версии в соответствующих файлах.

Тем временем мой партнер былвсе еще работает над новыми изменениями, поэтому его рабочее дерево было в грязном состоянии .Я уведомил его, что объединил его изменения, и попросил его вытащить их.Он не мог этого сделать, потому что некоторые из грязных файлов конфликтовали с удаленной веткой (в которой было мое слияние).Он использует расширение Eclipse EGit в качестве git-клиента.Как некоторые из вас могут знать, в этой ситуации Eclipse предлагает три варианта: сброс этих файлов (отмена ваших изменений), сохранение их или фиксация.Он решил совершить их.Это коммит 3c684e1 (оставляя остальные файлы грязными).И затем, каким-то образом, окончательный коммит слияния отбросил все изменения от коммитов в удаленной ветке, включая мой коммит слияния.

Это ошибка в Eclipse EGit?Я не могу думать ни о чем другом.

Обновление: Я обнаружил кое-что интересное.Я выполнил git log -p 3c684e1 12ab983 и git log -p 8095107 12ab983.Оба вывода показывают, что изменения моих коммитов были правильно объединены.Тем не менее, когда я запускаю git checkout 12ab983 ... изменений там нет.Итак, похоже, что Git врет

Обновление 2: Я попытался воспроизвести проблему.Я создал локальную ветку с именем branch_mine из коммита 8095107 и другую с именем branch_other для 137be26 (большой коммит от моего партнера до разрешения конфликтов).Я воссоздал то, что сделал партнер branch_other.Я изменил некоторые файлы, оставив дерево в грязном состоянии.Я попытался объединиться с branch_mine и Eclipse пожаловался, потому что я изменил некоторые файлы, которые конфликтовали.Я зафиксировал эти файлы и снова попытался выполнить слияние.Работало и без каких-либо конфликтов.Кроме того, мои изменения были внесены в новый коммит слияния.Так что это должно быть проблемой со стороны моего партнера.Просто я не знаю, что именно, и я боюсь, что это может повториться.Может ли это быть проблема синхронизации с файловой системой?Кроме того, стоит отметить, что, хотя он использует EGit в качестве клиента Git, он на самом деле занимается кодированием в Visual Studio Code.Итак, возможно, между этими двумя возникла проблема с синхронизацией, в результате чего коммит слияния на самом деле lie .Это просто удивительно и страшно одновременно.

...