Você nem sempre pode criar uma ramificação ou extrair uma ramificação existente e retornar a ela, porque não está registrado como um colaborador desse projeto específico.
A bifurcação nada mais é do que um clone no lado do servidor GitHub :
- sem a possibilidade de recuar diretamente
- com o recurso fila de bifurcação adicionado para gerenciar a solicitação de mesclagem
Você mantém uma bifurcação em sincronia com o projeto original:
- adicionando o projeto original como um controle remoto
- buscando regularmente a partir desse projeto original
- refaça seu desenvolvimento atual sobre o ramo de interesse que você atualizou a partir dessa busca.
A rebase permite que você garanta que suas alterações sejam diretas (sem conflito de mesclagem), facilitando a solicitação de recebimento quando você deseja que o mantenedor do projeto original inclua seus patches no projeto.
O objetivo é realmente permitir a colaboração, embora a participação direta nem sempre seja possível.
O fato de você clonar no lado do GitHub significa que agora você tem dois repositórios "central" ("central" como "visível de vários colaboradores).
Se você pode adicioná-los diretamente como colaborador de um projeto, não precisa gerenciar outro um com um garfo.
A experiência de mesclagem seria a mesma, mas com um nível extra de indireção (empurre primeiro o garfo e depois peça um puxão, com o risco de evoluções no repo original, fazendo com que suas combinações de avanço rápido não sejam mais um avanço rápido) .
Isso significa que o fluxo de trabalho correto é git pull --rebase upstream
(refazer o seu trabalho sobre novas confirmações do upstream) e, em seguida,git push --force origin
, em , para reescrever o histórico de maneira que seus próprios commits estejam sempre atualizados sobre as confirmações do repo original (upstream) .
Veja também:
Aqui estão as diferenças de alto nível:
Bifurcação
Prós
Contras
Ramificação
Prós
Contras
fonte
write
permissões no repositório.Tem a ver com o fluxo de trabalho geral do Git. É improvável que você possa enviar diretamente para o repositório do projeto principal. Não tenho certeza se o repositório do projeto GitHub oferece suporte ao controle de acesso baseado em ramificação, pois você não deseja conceder a ninguém a permissão de enviar para a ramificação principal, por exemplo.
O padrão geral é o seguinte:
Sem isso, é bastante incomum que projetos públicos permitam que alguém faça seus próprios compromissos diretamente.
fonte
A bifurcação cria um repositório totalmente novo a partir do repositório existente (simplesmente executando o git clone no gitHub / bitbucket)
A estratégia de ramificação cria uma nova ramificação sobre o repositório existente / em funcionamento
Mais específico: - Nos projetos de código aberto, é o proprietário do repositório quem decide quem pode enviar por push para o repositório. No entanto, a ideia do código aberto é que todos possam contribuir com o projeto.
Esse problema é resolvido por garfos: sempre que um desenvolvedor deseja alterar algo em um projeto de código aberto, ele não clona o repositório oficial diretamente. Em vez disso, eles o bifurcam para criar uma cópia. Quando o trabalho é concluído, eles fazem uma solicitação de recebimento para que o proprietário do repositório possa revisar as alterações e decidir se as mesclará ao seu projeto.
Em sua essência, a bifurcação é semelhante à ramificação de recursos, mas, em vez de criar ramificações, é feita uma bifurcação do repositório e, em vez de fazer uma solicitação de mesclagem, você cria uma solicitação de recebimento.
Os links abaixo fornecem a diferença de uma maneira bem explicada:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/
https://buddy.works/blog/5-types-of-git-workflows
http://www.continuousagile.com/unblock/branching.html
fonte