Подскажите, пожалуйста, как вы решаете проблему частичного мерджа с веток

других разработчиков?

Допустим, есть ветка refactor, откуда я хотел бы слить в development какие-то куски кода. Но так же разработчику хотелось бы чтобы у него удобно всё удалялось, что я не выбрал.

Ну и это все было бы неплохо никак друг с другом дополнительно не согласовывать. Т.е. чтобы он в принципе всегда вынужден был делать полный мердж с ветки development, а не только лишь сливать отсутствующие файлы, а старый оставались. Как это все лучше организовать?

50 ответов

43 просмотра

Просто мерджишь нужный код в мердж, а с него все мерджат себе

Mihail- Автор вопроса
Yurii M
Просто мерджишь нужный код в мердж, а с него все м...

всмысле, делать сначала явный мердж, а потом делать отдельный коммит с тем, что я принимаю, а что не принимаю?

Mihail- Автор вопроса

здесь описал проблематику. Что именно вызывает вопросы7

Забираете куски кода из refactor в development, затем делаете rebase ветки refactor на development, резолвите конфликты, если будут (а они 100% будут, потому что кусок кода который вы берете из refactor будет отличаться от того что было изначально в ветке refactor на момент её создания) Но вероятность получить множество конфликтов при таком подходе прям очень высокая. Вы уверены что вам нужна отдельная долгоживвщая ветка для рефакторинга?

Mihail- Автор вопроса

Забираю куски кода как? Обычным диффом? После этого что? Коммит? Почему именно ребейз? Ну у меня есть ментор, который всё, что ему не нравится, пихает в рефактор ветку, а затем обсуждения в pull request. Весьма удобно получается. Или у вас есть другие предложения? Создавать каждый раз новую ветку это надо напрягаться и постоянно будем забывать какие-то ветки удалять, после чего будет их большая масса. Вспоминать что там в них и удалять будет весьма непросто.

Mihail
Забираю куски кода как? Обычным диффом? После этог...

такому ментору бы ментора по гит не мешало найти

Mihail- Автор вопроса
Mihail
Так что вы предлагаете?

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

Mihail
Забираю куски кода как? Обычным диффом? После этог...

а насчет вашего вопроса про rebase - в соответствии с вашей задачей ( > старый неизмененный код, но которого нет в development оставался постоянно в refactor и постоянно мозолил глаза при сравнении веток) это вариант решения в книге есть описание и примеры как это работает

Mihail- Автор вопроса
Vitaliy Ponomarev
предлагаю вам попробовать найти в чем отличия ваше...

Та хз, там много правок одновременно идёт по разным частям функционала и чаще всего по мелочи. Под каждый функционал отдельную ветку делать это излишество, как мне кажется. Ну и к тому же было бы всё таки непохо в истории иметь возможность найти после частичного применения правок какие-то изменения, которые я не применил. А тут проблематика озвученная изначально вполне себе сохраняется

Mihail- Автор вопроса
Mihail
Та хз, там много правок одновременно идёт по разны...

потому что вы не понимая основ git пытаетесь изобрести какой-то сложнореализуемый рабочий процесс.

Mihail
Так почему не мердж? 🤔

что происходит при merge и что происходит при rebase ?

Mihail- Автор вопроса
Vitaliy Ponomarev
потому что вы не понимая основ git пытаетесь изобр...

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

Mihail- Автор вопроса

Merge создаёт отдельный коммит со слиянием. Ребейз применяет каждый коммит по очереди на ветке в которую происходит слив

Mihail
Merge создаёт отдельный коммит со слиянием. Ребейз...

какое состояние исходной и целевой веток используется при merge и при rebase?

Mihail- Автор вопроса
Mihail
Забираю куски кода как? Обычным диффом? После этог...

А эта ветка с рефактором в основную когда-нибудь мержится? А как этот ментор весь этот рефакторинг объясняет с точки зрения ценности для бизнеса?

Mihail- Автор вопроса
Serge L.
А эта ветка с рефактором в основную когда-нибудь м...

Эмм, ну об этом и вопрос. Раньше я делал обычным диффом. Сейчас думаю, что следует мерджить, чтобы удалялось что-то из его ветки. Но он в рефактор мерджит, конечно. Та по разному он объясняет. Это я решаю, что из его идей полезно, а что не очень. Как это относится к моему вопросу?

Если вы втихую хотите как-то из wip-ветки, ни с кем не согласовывая, перенести часть изменений в основную, то это звучит как плохая организация рабочего процесса. Стандартным вариантом было бы попросить автора создать отдельную ветку/МР с нужной частью изменений, чтоб они прошли ревью и тесты, после чего вмержить. Такие просьбы с мотивацией "хочу основать свою фичу на этом изменении" вполне обычны

Mihail
Эмм, ну об этом и вопрос. Раньше я делал обычным д...

Вы не ответили на мой первый вопрос. А второй чисто из любопытства, почему ментор он, а решаете что из его идей полезно — вы. Какая-то непонятная иерархия.

Mihail- Автор вопроса
Serge L.
Если вы втихую хотите как-то из wip-ветки, ни с ке...

И какая ветка в нашем случае это вип? Рефактор? Даже если ментор создаст отдельную ветку без конфликтов, это всё равно не значит, что я приму из неё все изменения. Соответственно, проблематика остаётся

Mihail- Автор вопроса

Ответил. Ок переформулирую Эмм, ну об этом и вопрос. Раньше я делал обычным диффом, соответственно, ничего явно не мерджил с его ветки. Сейчас думаю, что следует мерджить, чтобы удалялось что-то из его ветки. Но он в рефактор мерджит, конечно.

Mihail- Автор вопроса

Нормально. Менторы могут быть по разным направлениям. А главный разработчик это я

Mihail
И какая ветка в нашем случае это вип? Рефактор? Д...

WIP-веткой я назвал ветку рефактора, потому что она не основная и в ней постоянно появляются новые изменения.

Mihail
Ответил. Ок переформулирую Эмм, ну об этом и вопр...

То есть ответ "нет, ветка рефактора никогда не мержится и не планирует быть вмерженной в мастер/девелоп/основную ветку", так?

Mihail- Автор вопроса
Mihail
Ответил. Ок переформулирую Эмм, ну об этом и вопр...

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

Mihail- Автор вопроса
Vitaliy Ponomarev
вот оно. почему у вас сложилось мнение, что что-т...

Я хочу, чтобы что-то удалялось у него, когда он мерджит в свою, чтобы сделать состояние своей ветки более свежей

Mihail
Я хочу, чтобы что-то удалялось у него, когда он ме...

вопрос не про “хочу” а про “как это работает” т.е. почему вы решили что вам в этом сценарии должен помочь merge его изменений к себе

Mihail
Нормально. Менторы могут быть по разным направлени...

Если вы можете санкционировать, какие изменения будут приняты, а какие нет, то мне не до конца понятно, почему вы проблему с большой головы (другого человека) перекладываете на здоровую (свою). Проблема-то в том, что у вас разработчик занимается бесполезной херней, производя изменения, которые вы никогда не примете. Есть вариант просто забить на это и ничего не делать с его веткой, пусть бесконечно бесполезно висит, пусть с этим разбираются менеджеры. Есть вариант заставить его делать только санкционированный рефактор, сразу с прицелом, что тот будет вмержен как можно скорее. Для этого под рефакторинг заводятся задачи. А задачи стараются делать атомарными и дробить как можно сильнее, по многим причинам. Более атомарными, чем "отрефакторить всё без понятной цели и даже примерного понимания сроков". То есть вместо попыток справиться со следствием, выгоднее попробовать решить саму проблему.

Mihail- Автор вопроса
Vitaliy Ponomarev
вопрос не про “хочу” а про “как это работает” т.е...

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

Mihail- Автор вопроса
Mihail
Тем, что если я сделаю отдельный коммит, после мер...

Аа, нет, нормально. Там же будут совпадать ветки после мерджа в development по идее. Возможно и без ребейза всё получится

Mihail
Забираю куски кода как? Обычным диффом? После этог...

А зачем вам мэнеджить старые ветки ? Но вообще есть список несмерженных веток. Можно просто по пятницам его смотреть и то что неактивно понимать, ветка в git, это просто именованный коммит не более

Mihail
Та хз, там много правок одновременно идёт по разны...

Ваша главная ошибка - боязнь новых веток, это не проблема, git создан для этих веток, излишество это ваш сизифов труд с диффом : (поставьте gitlab, чтоб удобно было, пару месяцев назад я его в докер за 15 мин работы воткнул (качалось дольше всего)

Mihail- Автор вопроса
Mihail
менеджерить старые ветки? Это какие?

Ну я потом прочитал, вы их не создаете, потому что боитесь что их придется менеджить

Mihail- Автор вопроса
Alexey
Ваша главная ошибка - боязнь новых веток, это не п...

скажите, пожалуйста, немного подробнее, как вы видите флоу

Mihail
скажите, пожалуйста, немного подробнее, как вы вид...

Я описал в первом сообщении, ветки под фичи, dev - staging, master production, ревью можно проводить в gitlab, там удобные инструменты.

Mihail- Автор вопроса
Alexey
Я описал в первом сообщении, ветки под фичи, dev -...

я имею ввиду поэтапно для гитхаба. Вот, допустим, ментор видит 10 проблем в коде. Создаёт 10 веток под каждую из них? И делает отдельный пул реквест с каждой из них?

Mihail
скажите, пожалуйста, немного подробнее, как вы вид...

master - прод dev - разработка От dev создаёте ветку, делаете в ней изменения Закидываете PR из своей ветки в dev Ментор в этом PR делает ревью, обсуждаете, чёт переделываете и т.д. В итоге PR либо принимается и вливается в dev, либо отклоняется Всё Никаких веток ментор вам создавать не должен

Mihail
я имею ввиду поэтапно для гитхаба. Вот, допустим, ...

Если github, то вы создаете ветку под фичу, а ментора включаете в ревьюверы, он ваш мерж будет аппрувить или ревьювить,

Mihail
я имею ввиду поэтапно для гитхаба. Вот, допустим, ...

Дополню, если код уже готовый, то надо не ветку создавать а issue.

Пусть создает тикеты, если вы хотите включить его в ретроспективу только

Mihail- Автор вопроса
Alexey
Пусть создает тикеты, если вы хотите включить его ...

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

Mihail- Автор вопроса
Alexey
Почему ? Это назывется порядок.

это слишком затратно по времени

Mihail
это слишком затратно по времени

А диффы вручную создавать не затратно ? Там три клика

Mihail
нет

Ну тогда сами, мы вам не поможем, у вас кривой рабочий процесс.

Похожие вопросы

Обсуждают сегодня

Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Привет! Подскажите может кто сталкивался, при создании купона выходит вот в таком виде окно. Как поправить это?
Ruslan
4
Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
Помните я тут рассказывал про таролога программистку? Мне выдали новый мем
Magic
6
DataGrip не сканирует почему-то все таблицы, хотя раньше показывал их че за херня, сталкивались?
Magic
9
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Карта сайта