Strategia rozgałęzienia GIT z 2 oddziałami (mistrz, zadanie) - jak zapobiec utracie kodu w głównej gałęzi?

0

Pytanie

Czytam o strategii rozgałęzienia GIT, która obejmuje rozwój, rozwój, poprawka, wydanie, funkcji.

Jesteśmy 5 programistów pracujących na stronie internetowej python. Poniżej znajduje się strategia rozgałęzienia, którą chcę wykorzystać na GitHub.

  1. Produkcyjny kod znajduje się w głównej gałęzi.
  2. Tworzę gałąź zadania od głównej gałęzi.
  3. Pracuję nad gałęzią zadań i przed wysłaniem kodu git, przechodzę na master i wyciągam kod, przechodzę na Task i oswajam się z master. Jest to robione po to, aby mój kod był zsynchronizowany z zdalnym mistrzem
  4. Docisk kod
  5. Podnieś PR z gałęzi zadań w główną gałąź.

Co się stanie, jeśli master jest dodatkowy kod, którego mi brakuje w wątku zadań, i zapominam wykonać krok 3?

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

Najlepsza odpowiedź

1

Jeśli korzystasz z GitHub, można dodać Regułę ochrony oddziałów, które wymaga, aby partnerzy byli na bieżąco master gałąź, zanim będzie im wolno łączyć w zapytaniu na fragment:

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

Przed zjednoczeniem gałąź musi być przeglad zrobiono z podstawową gałęzią.

Zobacz dokumentację, zgodnie z zasadami ochrony oddziałów GitHub tutaj.

2021-11-23 14:34:28

Innej odpowiedzi, najwyraźniej wskazuje na to, że to się dzieje automatycznie?
variable

Jest to dodatkowa kontrola bezpieczeństwa dla twojego master gałąź. Jeśli ta zasada ochrony gałęzi wyłączone, w dokumentach czytamy: "Sprawdzanie stanu może zakończyć się niepowodzeniem po zjednoczeniu państwa gałęzi, jeśli w podstawowej gałęzie są niezgodne zmiany".
Adil B

Zapobiega czy to połączenie, nawet jeśli nie ma konfliktu (więc nie ma konfliktu wierszy), ale kod się zmienił w innych miejscach? Tym samym zmuszając autora wyciągnąć ostatni kod i zjednoczyć się, zanim zrobisz pr?
variable

Tak, na tym polega cel tej zasady ochrony oddziałów. Na stronie dokumentacji również kilka przydatnych informacji.
Adil B

Gdzie jest regulacja, która pozwala zapobiec przejście do mistrza bez PR?
variable

Włącz Restrict who can push to matching branches zasada ochrony gałęzi, i można ograniczyć bezpośrednie kliknięcie na mastertym administratora repozytorium.
Adil B
1

Nie stracisz kod. Jeśli twój Task oddział porusza się bez synchronizacji z master po pierwsze, GitHub poinformuje cię, jeśli pojawiają się jakieś konflikty.

W przypadku wystąpienia konfliktów dostaniesz tę wiadomość na stronie PR:


enter image description here


Wtedy będziesz w stanie pociągnąć master lokalnie napraw konflikty i przenieś zmiany w Task.

Jeśli konfliktu plików nie ma, można je połączyć bez aktualizacji Task gałąź, nawet jeśli master na przodzie.

2021-11-23 14:30:54

Co masz na myśli pod If there are no conflicting files - masz na myśli brak konfliktów w odniesieniu do całego pliku lub poszczególnych konfliktów wierszy?
variable

Mam na myśli wszelkie konflikty, z którymi można spotkać się w lokalnym stowarzyszeniu: wiersze, które git nie może połączyć sam. To może być cały plik (plik zdalny lub zmodyfikowany plik) lub pojedyncze wiersze. Ale jeśli zmienisz jeden i ten sam plik w dwóch różnych miejscach, konfliktów nie będzie
thchp

Czy jest jakiś sposób, aby zapobiec połączenie, nawet jeśli nie ma konfliktu (dlatego konfliktu wierszy nie ma), ale kod się zmienił w innych miejscach?
variable

Można wymusić szybkie połączenie w swoim repo stackoverflow.com/questions/60597400/... Ale jaki w tym byłby sens? Jeśli chcesz chronić swoją gałąź produkcyjną, nie powinny pozwalać sobie na swojej drużynie przyłączenia się do niej, za wyjątkiem tych, którzy mają prawo (może utrzymać rolę lub pisać rolę?)
thchp

Pod zapobieganiem fuzji mam na myśli zapobieganie pr.
variable

Nie można zapobiec pr. Można chronić gałęzie, aby tylko administratorzy mogą łączyć PR, i wymagać, aby PR aktualizowane, stosując liniową historię
thchp

Jak o ustawienia, o których mowa w innej odpowiedzi?
variable

W innych językach

Ta strona jest w innych językach

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