Pergunta

Eu só tenho em torno de criar filiais tópico para características inacabadas do meu projeto, administrados pela Git. Todos eles são muito auto-suficiente de tal forma a que um ramo tópico não se relacionam diretamente com outro ramo tópico. Todos os ramos, no entanto, têm alguns pontos em comum, o branch master, que é o núcleo do sistema, os ramos tópico simplesmente estender os recursos no branch master.

Se eu entendi corretamente, se eu fizer alguma coisa no branch master que afeta (m) quaisquer ramos tópico (por exemplo, mudar o API usado para comunicação entre o núcleo e as características individuais) que a mudança não se propaga para os ramos de tópicos automaticamente, de modo que os ramos poderia ser fixado em conformidade. As mudanças teriam de ser manualmente fundidos ou cereja-escolhido para os outros ramos.

Eu entendo que o uso de submódulos iria conseguir isso. Os submódulos levar, no entanto, para muita separação entre o projeto principal e os pretensos projetos de recursos, principalmente porque os recursos não são auto-sustentáveis. Eles contam com o núcleo.

Então, o que eu estou procurando é algum tipo de método para dizer que certos arquivos / diretórios são exclusivos de um determinado ramo, tudo o resto vem de um ramo principal. Na falta de uma analogia melhor, falando em termos de Photoshop, quero mestre para ser a camada de fundo, e cada ramo tópico seria uma camada de imagem parcialmente transparente em cima dela, com alguns índices originais.

Foi útil?

Solução

Essa noção de "composição" ou "herança de configuração" não é suportado no Git, como explicado na pergunta " flexível vs estática ramificação ". Somente fusões permitir que você "compor" o conjunto exato de arquivos que você deseja.

O recurso submodule ajuda-lo a identificar um conjunto coerente de arquivo que deve ter seu próprio ciclo de vida e ser marcado em seu próprio ritmo. Isso não é o caso de seus recursos.

Sua abordagem deve permanecer um " " um, onde -lo a desenvolver, tag e mesclar a todo o sistema. Se evolui algo no branch master, ele precisa ser merge nos ramos de recurso.
Se os recursos envolvem um conjunto diferente de arquivos que os modificados no branch master, que merge será trivial. Se não, você pode seguir
de Mateusza sugestão , utilizando um intermediário ramo para resolver os conflitos e avaliar o resultado de tal mesclar um, mantendo o ramo de funcionalidade intocado.

Outras dicas

Vamos dizer que você tem mestre ramo e monte de ramos: feature1, feature2, feature3 ...

$ git checkout feature1
$ git branch master-with-feature1
$ git checkout master-with-feature1
$ git merge master

Toda vez que você fazer quaisquer alterações ao mestre ou feature1 você pode verificar a mestre-com-feature1 e fundi-los.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top