GIT ramos estratégia com 2 ramos (mestre, tarefa) - como impedir que o código de perda no branch master?

0

Pergunta

Eu estou lendo sobre o GIT ramos estratégia que envolve o mestre, desenvolver, correcção, a versão, a recurso.

Estamos a 5 desenvolvedores trabalhando em um python site. A seguir é de ramificação estratégia quero usar no GitHub.

  1. Código de produção está no branch master.
  2. Criar uma Tarefa ramo a ramo master.
  3. Eu trabalho na Tarefa de ramo, e antes de enviar o código para o git eu mudar para o mestre e puxe o código, mudar para a Tarefa e mesclar com o mestre. Isso é para que meu código está em sincronia com o mestre remoto
  4. Empurre código
  5. Aumentar PR a partir de Tarefas de ramo em ramo master.

O que acontece se o mestre tem o código adicional que eu estou faltando no meu trabalho do ramo e eu se esqueça de executar o passo 3?

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

Melhor resposta

1

Se você estiver usando o GitHub, você pode adicionar um Ramo de Proteção Regra que exige ramos para ser up-to-date com o master ramo antes de serem autorizados a serem mescladas em um Pull Request:

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

O ramo deve ser atualizado com base ramo antes de se fundir.

Veja o GitHub Ramo regra de Proteção de documentação aqui.

2021-11-23 14:34:28

A outra resposta parece apontar para que esse processo é automático?
variable

Isso é um extra verificação de segurança para o seu master ramo. Se este ramo regra de proteção é desativada, o docs dizer: "verificações de Status poderá falhar depois que você mesclar o seu ramo se há mudanças incompatíveis com a base do ramo."
Adil B

Faz isso impedir a série, mesmo quando não há nenhum conflito (então nenhuma linha de conflito), mas o código é alterado em outros lugares? Assim, forçando o desenvolvedor a puxar mais recente código de mesclagem e, antes de fazer uma PR?
variable

Sim, esse é o propósito deste ramo regra de proteção. A página de documentação tem alguns detalhes úteis, também.
Adil B

Onde está a definição para impedir que empurrar para o mestre sem PR?
variable

Ativar o Restrict who can push to matching branches ramo regra de proteção e pode restringir direto empurra para master, incluindo administradores do repositório.
Adil B
1

Você não vai perder o código. Se o seu Task ramo é empurrado sem ser sincronizados para master primeiro, o GitHub vai dizer a você se há conflitos.

Em caso de conflitos, você receberá esta mensagem do PR:


enter image description here


Em seguida, você pode puxar master localmente, corrigir os conflitos e empurrar para trás as alterações Task.

Se não há conflito de arquivos, você pode mesclar sem atualizar o Task ramo, mesmo se master está à frente.

2021-11-23 14:30:54

O que você quer dizer por If there are no conflicting files - você quer dizer, sem conflitos, com respeito a todo o arquivo ou linhas específicas em conflito?
variable

Quero dizer, qualquer conflito que você iria encontrar quando você mescla localmente: linhas que o git não consegue mesclar si. Ele pode ser um arquivo inteiro (arquivo excluído vs. arquivo modificado) ou linhas específicas. Mas se você modificar o mesmo arquivo em duas partes diferentes, não haverá conflitos
thchp

Existe alguma maneira eu posso evitar de mesclagem, mesmo quando não há nenhum conflito (então nenhuma linha de conflito), mas o código é alterado em outros lugares?
variable

Você pode impor o avanço rápido direta no seu repo stackoverflow.com/questions/60597400/... Mas o que seria o ponto de fazer isso? Se você quer proteger o seu ramo de produção, você não deve permitir que a sua equipe a mesclar-se que, exceto para aqueles que têm o direito (manter a função vs. escrever papel, talvez?)
thchp

Por impedir a série eu quis evitar-PR.
variable

Você não pode impedir que o PR. Você pode proteger ramos, para que apenas os administradores podem mesclar um PR, e exigem que o PRs está atualizado impondo a história linear
thchp

O que sobre a definição mencionada a outra resposta?
variable

Em outros idiomas

Esta página está em outros idiomas

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