GIT ramificare strategie cu 2 ramuri (master, sarcina) - cum pentru a preveni codul de pierdere în ramura master?

0

Problema

Am citit despre GIT ramificare strategie care implică, de master, de a dezvolta, de remediere rapidă, de presă, caracteristică.

Suntem 5 dezvoltatorii de lucru pe un python-ul. Următoarele este de ramificare strategie vreau să folosesc pe GitHub.

  1. Codul de producție în ramura de master.
  2. Am crea o Sarcină filiala de pe ramura de master.
  3. Eu lucrez pe Sarcina de ramură, și înainte de a împinge codul de la git am trece la master și trageți cod, comutator de Sarcină și de îmbinare cu maestrul. Acest lucru este astfel încât codul meu este în sincronizare cu master la distanță
  4. Împinge cod
  5. Ridica PR de Sarcina se ramifică în ramura master.

Ce se întâmplă dacă maestrul are un cod suplimentar care sunt lipsă în Sarcina mea ramură și am uitat să te duci la pasul 3?

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

Cel mai bun răspuns

1

Dacă utilizați GitHub, puteți adăuga o Ramură Regulă de Protecție care necesită ramuri pentru a fi up-to-data de cu master filiala înainte de a li se permite să fie comasate într-o Cerere de tragere:

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

Filiala trebuie să fie la curent cu ramură de bază înainte de fuziune.

Vezi GitHub Ramură regulă de Protecție a documentației de aici.

2021-11-23 14:34:28

Alte răspunsul pare să indice că aceasta este automata?
variable

Acest lucru este un plus de siguranță pentru a verifica dvs. master ramură. Dacă această ramură regulă de protecție este dezactivat, doctorii spun: "controale de Stare poate să nu reușească după ce merge de ramură dacă există modificări incompatibile cu baza de ramură."
Adil B

Face acest lucru preveni merge chiar și atunci când nu există nici un conflict (deci nici o linie conflict), codul s-a schimbat în alte locuri? Forțând astfel dezvoltator pentru a trage mai recente codul și fuziona înainte de a face un PR?
variable

Da, asta e scopul acestei ramuri de protecție a statului. Pagina de documentație are unele detalii utile, de asemenea.
Adil B

Unde este setarea pentru a preveni împinge să stăpânească fără PR?
variable

Permite Restrict who can push to matching branches filiala regulă de protecție și puteți restricționa directe împinge să master, inclusiv adminii de pe repository.
Adil B
1

Tu nu va pierde cod. Dacă Task filiala este împins, fără a fi sincronizate cu master în primul rând, GitHub vă va spune dacă există vreun conflict.

În caz de conflicte, veți primi acest mesaj de pe PR:


enter image description here


Apoi, puteți trage master la nivel local, rezolva conflictele și de a împinge înapoi modificările să Task.

Dacă nu există nici un conflict de fișiere, aveți posibilitatea să îmbinați fără actualizarea Task sucursală, chiar dacă master este înainte.

2021-11-23 14:30:54

Ce vrei sa spui prin If there are no conflicting files - adică nu intră în conflict cu privire la întregul dosar sau linii specifice contradictorii?
variable

Adică orice conflicte ar întâlni atunci când merge la nivel local: linii git, nu pot fuziona în sine. Acesta poate fi un întreg fișier (fișier șters vs fișier modificat) sau linii specifice. Dar dacă modificați același fișier în două părți diferite, nu va fi nici un conflict
thchp

Există vreun mod în care pot preveni merge chiar și atunci când nu există nici un conflict (deci nici o linie conflict), codul s-a schimbat în alte locuri?
variable

Puteți aplica fast-forward merge pe repo-ul stackoverflow.com/questions/60597400/... Dar ce rost ar avea de a face asta? Dacă vrei să-ți protejezi ramură de producție, nu ar permite echipei dvs. pentru a merge în ea, cu excepția celor care au dreptul (menține rolul vs scriu rol poate?)
thchp

De a preveni fuziona am vrut preveni PR.
variable

Tu nu poate împiedica PR. Vă puteți proteja de sucursale, astfel încât numai administratorii pot fuziona un PR, și necesită că PRs sunt actualizate prin aplicarea liniar istorie
thchp

Ce despre setarea menționat în alt raspuns?
variable

În alte limbi

Această pagină este în alte limbi

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