Git Merge - избегайте конфликтов и путаницы - PullRequest
0 голосов
/ 20 января 2019

Я давно работаю с git.Но всякий раз, когда возникает ситуация, когда мне нужно создать новую ветку и объединить ее, я лично избегаю этого, потому что столкнулся с множеством проблем при выполнении одного из моих проектов.Который был разрушен после git merge, и проект получил массу ошибок.

Так что теперь я хочу понять, git merge или rebase.

Я слышал о rebase, но все еще не использовал его, думая, что онбудет иметь тот же эффект, что и git merge do: p

Давайте рассмотрим пример

Я работаю над основной веткой, и проект завершен.Теперь я хочу обновить проект до совершенно нового макета в соответствии с новым дизайном.

Итак, я создал ветвь с названием layout.И я закончил интеграцию нового шаблона в ветвь макета и добавил новую функцию.

Это новая функция, которую я хочу добавить в свою основную ветку, не получая новый шаблон.

Как можноЯ достигаю этого.

1 Ответ

0 голосов
/ 20 января 2019

У вас также будут конфликты как со слиянием, так и с перебазированием, это не точка перебазирования.

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

Поэтому используйте недолговечные ветки и объединяйте их не реже одного раза в день.

Тогда возникает вопрос: если у вас есть только кратковременные ветви, как добавить большую функцию, например, новый макет, как вы упомянули.

Одним из решений является использование переключателей функций : объединить новую функцию с основной веткой, даже если функция не готова для показа пользователям, и использовать переключатель функций, чтобы скрыть функцию. Как только вы решите, что функция достаточно хороша, просто включите ее, и новая функция теперь видна пользователю.

Подробнее о переключателях функций: https://martinfowler.com/articles/feature-toggles.html

Вы даже можете использовать размещенный сервис для этого, если хотите: https://configcat.com/

...