Git Syncing: код выгружен из одной среды; Как расследовать? - PullRequest
0 голосов
/ 17 сентября 2011

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

Поначалу этот вопрос звучит довольно обобщенно, но я не знаю, как "классифицировать" эту проблему, и, кроме того, я не уверен в наиболее эффективном способе ее диагностики. Я могу объяснить это, однако, в быстрой игре за игрой.

Play по радио

Настройка: У нас есть три среды: A, B и C. Каждая из них является клоном центрального хранилища.

  • Только что исправили функцию. У B & C все еще есть сломанная версия.
  • B хочет, чтобы код А внес косметические изменения в исправленную функциональность.
  • C - это моя среда, и я выполняю задачи Git.
  • Сначала я объединяю B & C, потому что любые конфликты будут легче разрешаться.
  • Я запихиваю этот результат, затем перетаскиваю его в A и разрешаю там конфликты.
  • Я запихиваю этот результат, затем перетаскиваю его в B & C.

Внезапно решение А ушло. Эта функция, опять же, повсеместно нарушена. У меня создается впечатление, что новый, исправленный код А был по ошибке заменен.

Вопрос № 1: проблема с заказом?

У меня сложилось впечатление, что порядок, в котором разные клоны толкают и тянут, не должен менять результат. Я прав? Или моя проблема связана с порядком толчков и тяг?

Вопрос № 2: Какие инструменты полезны для диагностики этой проблемы?

Даже после использования git diff и представлений дерева журнала GUI, как в gitk или TortoiseGit , решение иногда остается неясным. Существуют ли какие-либо другие инструменты в наборе Git или иным образом, которые указывают, как код перемещается или как определяется предпочтение?

1 Ответ

1 голос
/ 17 сентября 2011

Нет, порядок не имеет значения. Ваша проблема где-то в деталях, которые вы пропускаете о как вы делаете слияния или разрешаете конфликты. Вы не делаете что-то, в чем оно нуждается в нужное время, или используете --force, когда вы этого не делаете, или случайно работаете с неправильным репо в какой-то момент, или что-то в этом роде.

Я бы порекомендовал протестировать вашу функцию и запускать git status и git log между каждым маленьким шагом, чтобы убедиться, что то, что вы делаете, - это то, что, по вашему мнению, совершено. git reflog в репо А - это хороший ресурс, помогающий вам увидеть, когда ваши изменения исчезли, и вернуть их, но вам нужно сузить круг действий, вызывающих вашу проблему.

Также, если я могу сделать предложение, если вы выполняете все задачи git самостоятельно, вам не нужен отдельный центральный репозиторий, поскольку он просто добавляет лишние шаги. Если B хочет код A, это должно быть так же просто, как перетащить непосредственно из A в B. Затем, когда B закончил с косметическими изменениями, потяните прямо из B ко всем остальным. Попытка объединить все, везде, каждый раз, рано или поздно, сбивает вас с толку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...