Стратегия ветвления GIT с 2 ветвями (мастер, задача) - как предотвратить потерю кода в главной ветви?

0

Вопрос

Я читаю о стратегии ветвления GIT, которая включает в себя освоение, разработку, исправление, выпуск, функцию.

Мы-5 разработчиков, работающих на веб-сайте python. Ниже приведена стратегия ветвления, которую я хочу использовать на GitHub.

  1. Производственный код находится в главной ветви.
  2. Я создаю ответвление задачи от главной ветви.
  3. Я работаю над ветвью задач и, прежде чем отправлять код в git, переключаюсь на master и вытаскиваю код, переключаюсь на Task и сливаюсь с master. Это делается для того, чтобы мой код был синхронизирован с удаленным мастером
  4. Нажимной код
  5. Поднимите PR из ветви задач в главную ветвь.

Что произойдет, если у master есть дополнительный код, которого мне не хватает в ветке задач, и я забываю выполнить шаг 3?

git github
2021-11-23 14:18:56
2

Лучший ответ

1

Если вы используете GitHub, вы можете добавить Правило защиты филиалов, которое требует, чтобы филиалы были в курсе master ответвление до того, как им будет разрешено объединяться в запросе на извлечение:

GitHub's 'require branches to be up to date before merging' protection rule

Перед объединением ветвь должна быть обновлена с базовой ветвью.

Смотрите документацию по правилам защиты филиалов GitHub здесь.

2021-11-23 14:34:28

Другой ответ, по-видимому, указывает на то, что это происходит автоматически?
variable

Это дополнительная проверка безопасности для вашего master ветка. Если это правило защиты ветвей отключено, в документах говорится: "Проверка состояния может завершиться ошибкой после объединения вашей ветви, если в базовой ветви имеются несовместимые изменения".
Adil B

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

Да, в этом и заключается цель этого правила защиты филиалов. На странице документации также есть некоторые полезные сведения.
Adil B

Где настройка, позволяющая предотвратить переход к мастеру без PR?
variable

Включите Restrict who can push to matching branches правило защиты ветвей, и вы можете ограничить прямые нажатия на master, включая администраторов репозитория.
Adil B
1

Вы не потеряете код. Если ваш Task ветвь перемещается без синхронизации с master во-первых, GitHub сообщит вам, если возникнут какие-либо конфликты.

В случае возникновения конфликтов вы получите это сообщение на странице PR:


enter image description here


Тогда вы сможете потянуть master локально устраните конфликты и перенесите изменения в Task.

Если конфликтующих файлов нет, вы можете объединить их без обновления Task ветвь, даже если master впереди.

2021-11-23 14:30:54

Что вы имеете в виду под If there are no conflicting files - вы имеете в виду отсутствие конфликтов в отношении всего файла или отдельных конфликтующих строк?
variable

Я имею в виду любые конфликты, с которыми вы столкнетесь при локальном объединении: строки, которые git не может объединить сам. Это может быть целый файл (удаленный файл или измененный файл) или отдельные строки. Но если вы измените один и тот же файл в двух разных частях, конфликтов не будет
thchp

Есть ли какой-либо способ предотвратить слияние, даже если конфликта нет (поэтому конфликта строк нет), но код изменился в других местах?
variable

Вы можете принудительно выполнить быстрое слияние в своем репо stackoverflow.com/questions/60597400/... Но какой в этом был бы смысл? Если вы хотите защитить свою производственную ветвь, вы не должны позволять своей команде объединяться в нее, за исключением тех, кто имеет право (возможно, поддерживать роль или писать роль?)
thchp

Под предотвращением слияния я подразумевал предотвращение пиара.
variable

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

Как насчет настройки, упомянутой в другом ответе?
variable

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................