GIT větvení strategie s 2 větve (master, task) - jak, aby se zabránilo kód ztrátu v hlavní větvi?

0

Otázka

Já jsem četl o GIT větvení strategie, která zahrnuje mistr, rozvíjet, opravy hotfix, uvolnění, funkce.

Jsme 5 vývojářů pracujících na python webové stránky. Následuje větvení strategie chci používat na GitHub.

  1. Výrobní kód je v hlavní větvi.
  2. Já vytvoření Úkolu větev z hlavní větve.
  3. Pracuji na Hlavní větev, a předtím, než tlačí kód git jsem přepnout na master a vytáhněte kód, přepněte na Úkol a splynout s pánem. To je tak, že můj kód je v synchronizaci s dálkovým ovládáním
  4. Push kód
  5. Zvýšit PR z Hlavní větve do master větve.

Co se stane, když mistr má další kód, který mi chybí v mé Hlavní větev a zapomněl jsem spustit krok 3?

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

Nejlepší odpověď

1

Pokud používáte GitHub, můžete přidat Větev Ochranu Pravidlo, které vyžaduje, aby pobočky, aby up-to-data s master větev dříve, než oni mohou být sloučeny v Pull Request:

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

Pobočka musí být až do dnešního dne s základní větev před sloučením.

Viz GitHub Pobočka Ochranu pravidlo dokumentaci.

2021-11-23 14:34:28

Druhá odpověď se zdá ukazovat, že je to automatické?
variable

To je další bezpečnostní kontrola pro vaše master pobočky. Pokud tento obor ochrana pravidlo je zakázáno, doktoři říkají: "kontroly Stavu může selhat po sloučení své pobočky, pokud tam jsou nekompatibilní změny se základní větev."
Adil B

Má to zabránit sloučení, i když tam je žádný rozpor (takže žádná linka konfliktu), ale kód se změnil na jiných místech? Tím nutí vývojáře, aby vytáhnout poslední kód a sloučení před tím, než PR?
variable

Ano, to je účel této pobočky ochranu pravidlo. Dokumentace stránka má některé užitečné podrobnosti.
Adil B

Kde je nastavení, aby se zabránilo tlačit zvládnout bez PR?
variable

Povolit Restrict who can push to matching branches pobočka ochranu pravidlo a můžete omezit přímé tlačí na mastervčetně správci úložiště.
Adil B
1

Nebudete ztrácet kód. Pokud váš Task pobočka je tlačil, aniž by se synchronizují s master první, GitHub vám řeknou, jestli tam jsou nějaké konflikty.

V případě konfliktů, dostanete tuto zprávu na PR:


enter image description here


Pak můžete vytáhnout master lokálně opravit konflikty a tlačit zpět změny Task.

Pokud nejsou žádné konfliktní soubory, můžete je sloučit bez aktualizace Task větev, i když master je před námi.

2021-11-23 14:30:54

Co tím myslíš If there are no conflicting files - máte na mysli žádné konflikty s ohledem na celý soubor nebo konkrétní linky konfliktní?
variable

Myslím tím nějaké konflikty, s nimiž se setkáte při sloučení místně: řádky, které git nelze sloučit sám. To může být celý soubor (smazaný soubor vs. upravený soubor), nebo konkrétní linky. Ale pokud si upravit stejný soubor ve dvou různých částí, tam bude žádné konflikty
thchp

Je nějaký způsob, jak zabránit sloučení, i když tam je žádný rozpor (takže žádná linka konfliktu), ale kód se změnil na jiných místech?
variable

Můžete vynutit fast-forward merge na repo stackoverflow.com/questions/60597400/... Ale jaký by to mělo smysl dělat, že? Pokud chcete chránit své výrobní pobočky, neměli byste, aby váš tým sloučit do něj, s výjimkou těch, kteří mají právo (zachovat roli vs. napsat roli možná?)
thchp

Zabránit sloučení myslel jsem zabránilo PR.
variable

Nemůžete zabránit PR. Můžete chránit větve tak, že pouze administrátoři mohou sloučit PR, a vyžadují, aby PRs jsou aktuální prosazováním lineární historie
thchp

Co o nastavení uvedené v jinou odpověď?
variable

V jiných jazycích

Tato stránka je v jiných jazycích

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