#git #github #gitlab #bitbucket
#git #github #gitlab #bitbucket
Вопрос:
У меня есть 3 ветки: 1. мастер 2. функция аутентификации 3. функция-операции. branch 2 and 3
сделаны из master.
Я работал в функции аутентификации и сделал запрос на слияние. И это все еще находится на рассмотрении. Теперь я хочу работать с функциональными операциями, которые создаются из master. Теперь проблема, поскольку функция аутентификации все еще не объединена, и я хочу, чтобы некоторые функции из нее feature-operation
были включены. Итак, что лучше всего сделать, чтобы решить эту блокировку? должен ли я был создать feature-operation
эту ветку из функции-auth? хотя я где-то читал, что в идеале все ветки должны быть сделаны из master.
Ответ №1:
Вы можете рассмотреть возможность перебазирования feature-operation
поверх feature-auth
, предполагая, что вы единственный, кто работает над этой веткой функций..
Таким образом, вы извлекаете выгоду из всех коммитов / функций feature-auth
и можете возобновить работу feature-operation
.
git checkout feature-operation
git rebase feature-auth
git push --force
хотя я где-то читал, что в идеале все ветки должны быть сделаны из master.
Это не обязательно.
В вашем случае вы получаете из:
Для:
m--m--m--m--m (master)
/ (pending MR)
fa--fa--fa
fo'--fo'--fo' (feature-operation rebased)
OP добавляет:
например, я закончил работу
feature-operation
и до сихfeature-auth
пор не принят.
Затем после завершения работы и перед выполнением слиянияfeature-operation
я также должен перебазироваться наmaster
?
Если feature-operation
основано на feature-auth
работе, вам придется подождать, пока feature-auth
будет объединено, прежде чем (действительно) выполнить перебазирование feature-operation
поверх обновленного master
.
И:
Значит, я не должен вносить какие-либо изменения
feature-operation
, покаmaster
не будет обновлен? Или непосредственно перед запросом на слияние?
Пока вы работаете feature-operation
, вы можете запускать эту работу в своем удаленном репозитории столько раз, сколько захотите.
После feature-auth
слияния с master
вы перебазируете свою ветку feature-operation
поверх master
(после ветки git pull
on master
), а git push --force
feature-operation
затем перебазируете свою ветку и продолжаете работать (или, если вы закончили, сделайте MR)
Комментарии:
1. спасибо за комментарий, значит, без слияния функций-аутентификации в master я могу использовать все функции функций-операций? и это не похоже на слияние и т. Д.? На самом деле я не могу объединить код без одобрения
2. @FawadRana Я отредактировал ответ, чтобы проиллюстрировать эффект перебазирования вашей второй ветки поверх ветки с ожидающим MR (запрос на слияние)
3. Зачем вообще перебазироваться? Если fo является ветвью fa, любые изменения из PRS fa могут быть объединены в fo либо непосредственно из fa, либо из master, если вы хотите протестировать обновленный код. Если в master произошли существенные изменения, мы объединяем master с веткой функций и запускаем тесты перед слиянием с master.
4. @stolenmoment перебазируйте, чтобы работать над функциями fo поверх функций fa (которые все еще пересматриваются) Это то, что нужно OP: «Теперь проблема, поскольку функция аутентификации по-прежнему не объединена, и я хочу, чтобы некоторые функции из нее использовались в функции-операции»
5. @FawadRana Пока вы работаете
feature-operation
, вы можете запускать эту работу в своем удаленном репозитории столько раз, сколько захотите. Послеfeature-auth
слияния сmaster
вы перебазируете свою веткуfeature-operation
поверхmaster
(после веткиgit pull
onmaster
), аgit push --force
feature-operation
затем перебазируете свою ветку и продолжаете работать (или, если вы закончили, сделайте MR)
Ответ №2:
На мой взгляд, функциональные ветви должны появляться из той же ветви, в которую они будут объединены. Если feature b
бы это зависело от feature a
, они, вероятно, не должны были быть разными ветвями и разными PR для начала.
Перебазирование feature b
на feature a
может означать, что ваш PR feature b
включает все feature a
, что неправильно и несправедливо по отношению к процессу утверждения. Не говоря уже о принудительном нажатии, что является плохим знаком.
На мой взгляд, если feature b
feature a
вам что-то нужно, вы должны просто выбрать это.
Комментарии:
1. «Перебазирование функции b в функцию a может означать, что ваш PR в функции b включает в себя всю функцию a, что является неправильным и несправедливым по отношению к процессу утверждения»: это просто для того, чтобы заставить вас работать над b, пока a одобрен. Это не для создания PR / MR для самого b.
2. Что делать, если a не одобрен или отправлен обратно для внесения значительных изменений?
3. Пока ваша цель — работать над b, это не имеет значения. Исправьте a, перебазируйте b поверх a (снова) и продолжайте работать над b, пока a получает одобрение (снова).
Ответ №3:
Я далек от пуриста, и мне не нравится перебазирование; Я предпочитаю простые вещи, но у меня также нет комитета по проверке кода, дышащего мне в затылок, только товарищи по команде.
Я бы принял диаграмму ветвления @VonC, мастер ветвления на fa, а когда fa будет завершен к вашему удовлетворению, разветвляйте fa на fo. Перебазирование не требуется.
Если в какой-либо предыдущей ветке есть изменения, которые реализуют функции, которые вы хотите использовать, или важны для тестирования, объединяйте fa или master в fo так часто, как вам нравится. Если ничего другого, это упростит окончательное слияние.
Окончательное слияние fo с master будет ближе к master, чем в противном случае, что упрощает этот окончательный обзор для всех заинтересованных сторон.