Как избежать git конфликтов слияния? - PullRequest
0 голосов
/ 05 февраля 2020

Я установил репозиторий GitHub с двумя активными ветками master и development. Разработка происходит в ветке разработки, клонированной с удаленного GitHub и затем подталкиваемой к тому же. Когда работа завершена, разработка объединяется с мастером и помечается тегами. Тем временем кто-то вносит новые изменения в свой локальный клон и пытается вытащить обновленный код, он получает конфликты.

Я работал таким образом в ясном случае раньше, и у нас не было столько конфликтов. Это что-то, что я делаю не так, когда работаю?

Я попытаюсь объяснить это на примере. У меня есть скрипт сборки, в котором есть жестко закодированные значения, скажем, версия. Первоначально, в мастер и ветке разработки, версия 1.1. На данный момент, я и другой человек клонировали код. теперь я изменяю версию на 1.2 в ветке разработки, фиксирую и отправляю на удаленное устройство. Я также объединяю ветку разработки с мастером и толкаю также и мастер. Другой человек внес изменения в тот же файл, но не в ту же строку, и попытался сделать sh, и это не удалось. Итак, он делает git тягу, но получает конфликт. здесь что-то не так?

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Во-первых, похоже, что ветка разработки разделена между многими разработчиками (иначе конфликтов не будет)

Похоже, что вопрос по сути касается ветки разработки, ветка master довольно неактуальна на этот вопрос: конфликты возникают между локальной копией ветки разработки и удаленной б во время извлечения, я прав? (Я предполагаю это для ответа)

Если так ... Я не работал с ClearCase, но как разрешаются конфликты, если изменения вносятся в один файл, тот же метод, тот же метод линия? Как очистить кейс, чтобы узнать, какую копию выбрать во время «вытягивания»? Очевидно, это должно вызвать некоторый интерактивный процесс, который позволит программисту решить, что выбрать ...

Это как раз процесс разрешения конфликта. Когда вы говорите:

До этого я работал в прозрачном режиме, и у нас не было столько конфликтов. я что-то не так делаю в плане работы?

Я бы ответил, что это в значительной степени зависит от программной базы кода и программистов, а не от самого инструмента, а именно от того, часто ли люди модифицируют одни и те же файлы они будут получать частые конфликты. В качестве альтернативы, если кодовая база достаточно велика, и работа разработчика обычно не «перекрывается», конфликт будет разрешен автоматически.

Теперь вы должны понимать, что разрешение конфликтов - это не что-то плохое, это часть работы. Я могу дать только пару советов:

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

  • Рассмотрите возможность использования git pull --rebase из ветка развития. Это может помочь очистить историю коммитов. Я подозреваю, что в настоящее время журнал коммитов «залит» многочисленными коммитами слияния. В общем, сделайте это, если вы понимаете разницу между слиянием и перебазированием.

0 голосов
/ 05 февраля 2020

Да. В вашем случае вы должны получать обновления с пульта. Подробнее об этом здесь: извлечение и извлечение

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