нет конфликта дерева после push / pull в / из центрального репозитория git с использованием egit - PullRequest
1 голос
/ 01 мая 2011

У нас есть 2 разработчика, использующих EGit. Один работает на Windows, один работает на Linux

И мы установили политику сотрудничества следующим образом:

  • Есть центральное (голое) хранилище
  • Первоначально каждый разработчик проверяет данные из центрального хранилища и работает локально.
  • Когда двум нужно синхронизировать работу, мы извлекаем / толкаем из / в центральный репозиторий.

Мы используем центральный репозиторий, как мы думаем, с его помощью мы можем легко сотрудничать с большим количеством разработчиков в команде в будущем.

Все работает нормально, пока мы не обнаружим, что вообще нет конфликта, когда один разработчик изменил файл, который был перемещен другим каталогом. Вот шаги:

  • Один разработчик, переместить файл в другое место; передать его в свой локальный репозиторий; вставьте его в центральное хранилище.
  • Другой изменяет содержимое этого (того же) файла; передать его в свой локальный репозиторий. Потяните за центральное хранилище.

Мы ожидаем, что будет отчет о конфликте, когда второй разработчик сделает "тягу". Но нет конфликта. И в его рабочем каталоге (и в его локальном хранилище) появилось 2 файла:

  • Тот, который он модифицировал
  • А тот, который первый разработчик переместил в другой каталог.

Может кто-нибудь сказать нам, в чем наша ошибка?

Является ли наш способ работы нарушает дизайн Git?

Мы новички в git (давно знакомы с CVCS). При рассмотрении этого вопроса мы очень беспокоимся, так как это означает, что будет очень трудно объединить работу нашей команды. Мы считаем, что должны что-то делать неправильно. Спасибо, что разъяснили нам.

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Поскольку я использую Egit, командной строки нет. И я уверен, что проверял и удаленный файл и добавленный файл при фиксации.

Но как ни странно, я попробовал еще раз:

  • Удаление моего локального хранилища (из представления хранилища щелкните правой кнопкой мыши, удалите ...)
  • Оплата снова из центрального репо (клон)
  • И повторите шаги, которые я упоминал выше

Все работает как положено. Должно быть что-то проблема с моим предыдущим локальным репозиторием, так как я могу сделать Team> Pull. Мне нужно сделать выборку, а затем слияние. После проверки снова, как указано выше. Теперь все в порядке.

0 голосов
/ 01 мая 2011

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

После перемещения файла убедитесь, что вы установили сторону удаления изменений.Если вы сомневаетесь, проверьте с помощью git log --stat, что вы удалили файл из старого расположения в коммите, который выполняет перемещение.

Надеюсь, это поможет

...