O que é um ramo de tópico git?

137

O que é um ramo de tópico git? É diferente de um ramo comum de alguma maneira? Existem ramos que não são tópicos?

skiphoppy
fonte

Respostas:

114

As ramificações de tópicos geralmente são ramificações leves que você cria localmente e que têm um nome que é significativo para você . Eles são onde você pode trabalhar para uma correção ou recurso de bug (também chamado de ramificação de recurso) que deve levar algum tempo para ser concluído.

Outro tipo de ramificação é a "ramificação remota" ou "ramificação de rastreamento remoto". Esse tipo de ramificação segue o desenvolvimento do trabalho de outra pessoa e é armazenado em seu próprio repositório. Você atualiza periodicamente este ramo (usando git fetch) para rastrear o que está acontecendo em outro lugar. Quando estiver pronto para acompanhar as alterações de todos os outros, você usaria git pullpara buscar e mesclar.

Eu também vi outro tipo de ramificação, que é essencialmente uma árvore de arquivos completamente separada no mesmo repositório. Por exemplo, o próprio repositório Git contém cabeças denominadas man e html que contêm conteúdo totalmente diferente da ramificação principal . Não sei como esses tipos de ramos são geralmente chamados.

Greg Hewgill
fonte
6
Eu estava procurando como ter dois ramos sem um ancestral comum cometer e encontrei isto: madduck.net/blog/...
Nicolas
1
WRT a árvore comum, eu acredito que eles são chamados às vezes um ramo de órfão, semelhante à forma como Github recomenda que você criar uma página github manualmente
no máximo
1
Por que você diz que uma ramificação de tópico precisa ser local? Não há razão para pensar que você talvez não queira forçar um ramo de tópico. E, da mesma forma, outros desenvolvedores podem criar seus próprios tópicos e você deve puxá-los. Essa resposta parece estar confundindo duas propriedades totalmente não relacionadas de ramificações: se uma ramificação é local ou não, não tem relação alguma com a ramificação de tópicos.
Jean-Paul Calderone
@ Jean-PaulCalderone: Eu não acho que disse que os tópicos devem ser locais. É possível rastrear remotamente uma ramificação de tópico, é claro, se houver mais de um desenvolvedor trabalhando nela.
Greg Hewgill
2
Eu acho que a resposta implica isso. Por que "... que você criou localmente ..." e "... têm um nome que é significativo para você". uma parte intrínseca do que constitui uma "ramificação de tópico"? A primeira frase da sua resposta sugere fortemente que esses são recursos importantes de um ramo de tópico, mas na verdade são ortogonais à "tópica" de um ramo ou não. O parágrafo a seguir, onde você descreve "ramificações remotas", reforça a idéia de que a parte "criada localmente" de uma ramificação de tópico é importante. Sugiro reorientar esta resposta para enfatizar essas características de ramo não relacionadas.
Jean-Paul Calderone
81

Não é um termo técnico; apenas se refere a um ramo que foi criado para implementar um recurso específico ou corrigir um bug. O "tópico" é a razão da criação da ramificação, essencialmente.

mipadi
fonte
2
Sim. ao contrário de um ramo pessoal, onde você tem ramos: bob, alice, esteira, etc.
webmat
... então ramo tópico e ramo recurso são as mesmas coisas, correto?
Betlista 13/01
@ Betlista Mais ou menos, sim.
mipadi 14/01
28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches explica isso bem:

Uma ramificação de "tópico" é uma ramificação separada que você usa ao trabalhar em um único "tópico" (uma correção de bug, um novo recurso ou uma ideia experimental). É recomendável trabalhar em uma ramificação de tópico em vez de diretamente em cima de "mestre", porque:

{... visite o link ...}

Portanto, por todos esses motivos, é recomendável usar uma ramificação de tópicos para preparar envios, mesmo para contribuições simples, como correções de erros de confirmação única e similares.

Este exemplo também fornece exemplos. O que realmente me fez pensar: provavelmente é isso que a maioria das lojas já faz. Todos os projetos ágeis com que já participei fazem. Eu votei em "Não é um termo técnico" porque sinto que isso atinge a unha na cabeça.

Jeff Ancel
fonte
4

parece que o tipo de ramificação mais proeminente e importante que não são tópicos, seria liberar ramificações em um repositório importante disponível ao público, certo?

Provavelmente, isso é certo para você, mas é sobre você e o projeto em que está pensando; não é determinado pelo Git.

A maioria dos sistemas de controle de versão (principalmente os centralizados) prescreve ou impõe um fluxo de trabalho específico, incluindo o que faz sentido usar uma ramificação. O Git (e até certo ponto a maioria dos VCSs distribuídos) considera que o fluxo de trabalho, para quais ramificações são usadas, quando confirmar, para que diferentes repositórios são usados ​​etc. são todos escolhidos pelos usuários e acordos entre os usuários (políticas). Portanto, o Git não os aplica tecnicamente.

Essa é uma das coisas que dificultaram o aprendizado do Git. Oliver Steele explicou isso da visão do usuário, escrevendo sobre as políticas de confirmação .

Paulo
fonte