git - ramifica sem ramificação

1

Estou usando o git para gerenciar ajustes em uma distribuição e gerar um ISO para cada sabor. Atualmente tenho 4 filiais não incluindo mestre. Qual é a melhor maneira de gerenciar essas ramificações enquanto elas compartilham arquivos e eu quero mover facilmente as alterações entre as ramificações. Eu estou usando cherry pick para puxar as alterações para cada ramo. No entanto, eu tenho que fazer isso para cada commit que eu quero e olhar os logs para cada branch.

Quais outras opções eu tenho, alguma outra ideia de como melhor organizar essas ramificações?

    
por Walter 31.10.2011 / 23:03

2 respostas

2

Cada ramificação de distribuição deve ser ramificada originalmente da ramificação master e, em seguida, incluir confirmações diretamente nas ramificações de distribuição para torná-las exclusivas. Para mantê-los atualizados, ocasionalmente mescle as alterações de master nos ramos de distribuição.

Por exemplo, se suas ramificações de distribuição forem one e two , o gráfico de confirmação a seguir mostra que as confirmações são feitas na ramificação principal e, em seguida, as alterações são mescladas em cada ramificação.

# Create distribution branch and make it unique
git checkout -b one master
work... work...
git commit

# Make some changes on master
git checkout master
work... work...
git commit

# Merge the changes into the distribution branch
git checkout one
git merge master

Eu usei essa estratégia quando uma ramificação principal continha configurações de aplicativos genéricos, mas também queria manter as configurações do ambiente de produção na origem. Cada ambiente de produção tinha as configurações específicas confirmadas e, quando eu desejava atualizar um ambiente de produção, eu mesclava primeiro o mestre no ramo de produção.

    
por 08.11.2011 / 07:49
1

A estratégia que usaria dependeria da diferença entre as várias ramificações e dos tipos de alterações que precisam ser propagadas em todas as ramificações.

Se as diferenças são relativamente constantes e feitas em uma parte da base de código que não muda com muita frequência (como definir variáveis para valores diferentes em um Makefile, enquanto a maioria dos desenvolvimentos está acontecendo em arquivos de código-fonte), as ramificações, faça o desenvolvimento em master e use git rebase master nas ramificações sempre que eu precise atualizá-las.

No entanto, se as diferenças entre as ramificações forem elas mesmas fluidas, eu precisaria de merge e de cherry-pick conforme necessário.

    
por 08.11.2011 / 07:06

Tags