GIT ramificazione strategia con 2 rami (master, attività) - come evitare che il codice di perdita nel branch master?

0

Domanda

Sto leggendo su GIT ramificazione strategia che prevede il master, sviluppo, aggiornamento rapido (hotfix), il rilascio, la funzionalità.

Ci sono 5 sviluppatori che lavorano su un python sito web. Segue il ramificazione strategia voglio usare su GitHub.

  1. Il codice di produzione è nel branch master.
  2. Ho creato un Compito ramo i ramo master.
  3. Io lavoro sul ramo di Attività, e prima di spingere il codice di git posso passare a master e tirare il codice, passare al Compito e di unione con il maestro. Questo è così che il mio codice è in sincronia con telecomando master
  4. Spingere il codice
  5. Aumentare il PR da Attività di ramo in ramo master.

Cosa succede se il maestro ha avuto ulteriore codice che mi manca nella mia Attività di filiale e ho dimenticato di eseguire il punto 3?

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

Migliore risposta

1

Se si utilizza GitHub, è possibile aggiungere un Ramo Regola di Protezione che richiede rami per essere up-to-date con il master ramo prima di poter essere unite in una Richiesta di Pull:

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

Il ramo deve essere aggiornato con il ramo base prima della fusione.

Vedere la GitHub Ramo regola di Protezione di documentazione.

2021-11-23 14:34:28

L'altra risposta sembra indicare che questo è automatico?
variable

Questo è un ulteriore controllo di sicurezza per il vostro master ramo. Se questo ramo regola di protezione è disattivata, la documentazione dire: "i controlli di Stato può fallire dopo si unisce il ramo se ci sono modifiche incompatibili con la base del ramo."
Adil B

Questo vuol evitare di unione, anche quando non c'è conflitto (in modo che nessuna linea di conflitto), ma il codice è cambiato in altri luoghi? In tal modo costringendo gli sviluppatori a tirare ultimo codice e unire prima di fare un PR?
variable

Sì, questo è lo scopo di questo ramo regola di protezione. La documentazione pagina ha alcuni dettagli utili, anche.
Adil B

Dov'è l'impostazione per evitare di spingere al master, senza PR?
variable

Attivare l' Restrict who can push to matching branches la protezione del ramo regola e si può limitare diretta spinge a master, tra cui amministratori del repository.
Adil B
1

Non perdere il codice. Se il vostro Task filiale è spinto senza essere sincronizzati master primo, GitHub vi dirà se ci sono conflitti.

In caso di conflitti, si ottiene questo messaggio di PR:


enter image description here


Poi si può tirare master localmente, risolvere i conflitti e spingere indietro le modifiche Task.

Se non ci sono i file in conflitto, è possibile unire senza aggiornare il tuo Task ramo, anche se master è in anticipo.

2021-11-23 14:30:54

Che cosa si intende per If there are no conflicting files - vuoi dire che non è in conflitto con il rispetto per intero file o di specifiche linee di conflitto?
variable

Parlo di conflitti che si incontrano quando si uniscono a livello locale: linee che git possibile unire in sé. Può essere un intero file (file cancellati vs file modificato) o di specifiche linee. Ma se si modifica lo stesso file in due parti diverse, non ci sarà nessun conflitto
thchp

C'è qualche modo per evitare di unione, anche quando non c'è conflitto (in modo che nessuna linea di conflitto), ma il codice è cambiato in altri luoghi?
variable

È possibile applicare fast-forward unione sulla vostra repo stackoverflow.com/questions/60597400/... Ma quale sarebbe il punto in cui si fa quello? Se si desidera proteggere il vostro ramo di produzione, non si deve permettere che la tua squadra a fondersi in esso, tranne per coloro che hanno il diritto (mantenere ruolo e scrittura ruolo forse?)
thchp

Da evitare unione intendevo evitare PR.
variable

Non si può impedire PR. È possibile proteggere i rami, in modo che solo gli amministratori possono unire un PR, e richiedono che le PRs sono fino a data da applicazione lineare la storia
thchp

Che cosa circa l'impostazione menzionato nell'altra risposta?
variable

In altre lingue

Questa pagina è in altre lingue

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