Git: Filial ou Forquilha?

17

Eu tenho um projeto de jogo que terá duas versões:

  1. Uma versão simples do jogo, o núcleo.
  2. Uma versão avançada do jogo.

Eu tenho a 1ª versão no meu repositório público, e somente eu estarei trabalhando nele. Quanto à 2ª versão, dois amigos meus e eu trabalharemos nela. A parte crucial é que eu quero que as duas versões permaneçam no meu repositório.

Eu pensei que poderia usar ramos para isso, mas, considerando esta pergunta e sua resposta , não é uma boa prática fazê-lo em termos de versão. Até onde eu descobri, não é possível criar seu próprio repositório.

Quais são minhas opções aqui? Como posso manter as duas versões no meu repositório?

Varaquilex
fonte
3
Um garfo é um galho, apenas armazenado em outro local.
@MichaelT Ok. Os garfos devem ser mesclados em algum momento, como galhos?
Varaquilex
22
Fork é um conceito do github, não um conceito do git. Simplesmente clona e coloca na sua conta. Então, a clonagem é o que você está procurando. Veja stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr
@Varaquilex Way você precisaria manter as duas versões em um único repositório? Também forkum repositório criará um novo repositório em sua conta.
Mahdi
1
Por que não apenas ter uma versão que pode ser executada no modo simples ou avançado? É claro que algumas partes do código só seriam ativas de maneira simples e outras somente no avançado, mas imagino que muitas seriam compartilhadas.
precisa saber é

Respostas:

11

Para mim, parece que você precisa de dois repositórios e não de dois ramos . Uma ramificação é um mecanismo para lidar com as alterações em um único repositório para, eventualmente, mesclá-las com o restante do código.

Se você realmente deseja manter as duas versões de uma base de código semelhante no mesmo repositório, sua única opção é optar por uma filial , no entanto, como mencionado anteriormente, o principal objetivo de uma filial é separar alguns commits específicos de uma maneira que eles não entrem em conflito com o restante do código durante o período de desenvolvimento e os mesclem quando estiverem prontos.

Existem situações em que um repositório possui duas ramificações ligeiramente diferentes - por exemplo, versões de 32 bits e 64 bits do mesmo código-fonte; no entanto, eu ainda recomendo que você escolha repositórios separados, se isso for uma opção.

Mahdi
fonte
6

A resposta para a pergunta "devo clonar ou bifurcar" é exatamente a mesma que a resposta a esta pergunta "quero minha própria versão pessoal deste projeto?" yes = fork, no = clone o repositório.

No git, branch é um item leve que geralmente é temporário e pode ser excluído. Um fork (no github) é um novo projeto baseado em um projeto anterior. Você clona um repositório para trabalhar nele como um membro da equipe.

Muitos projetos públicos exigem que você garanta o projeto para manter as mudanças de trabalho fora do projeto principal.

Para a fase 2, bifurque o projeto, clone-o no computador em funcionamento e peça a seus amigos que façam o mesmo.

DwB
fonte
Como posso bifurcar meu próprio projeto?
Varaquilex
selecione o repositório no github clique em fork (botão no canto superior direito para mim)
DWB
Eu sei como fazer isso, quando você tenta clonar seu próprio projeto, você é simplesmente redirecionado para o repositório, como se pressionasse o botão Atualizar. Não há repositórios adicionais listados quando você navega em seus repositórios depois de tentar bifurcar seu próprio projeto. Acho que vou fazer um novo repositório, copiar o conteúdo do outro repositório que eu quero bifurcar e continuar trabalhando com outras pessoas lá.
Varaquilex
0

O que realmente parece que você quer é um submódulo. Se você criar o primeiro repo (seu repo simples e privado) e adicioná-lo como um submódulo ao repo da versão avançada, poderá rastrear e puxar as alterações para o submódulo no repo avançado ao desenvolver o repo simples privado.

Ryan Holleran
fonte
1
Várias pessoas reservaram um tempo para responder à resposta de Ryan, mas não tiveram tempo para comentar o motivo, e esse comportamento é contrário ao espírito das diretrizes da SO. Se na pergunta do OP, o "núcleo" era idêntico nas duas árvores, com um invólucro "simples" e "avançado" em torno do núcleo, então essa resposta é pelo menos razoável.
21917 Scott Prive
Voto a favor, mas ele provavelmente deve incluir uma explicação como a sua, que explica por que um submódulo seria bom e como funcionaria. Dividir o código comum em uma biblioteca que pode ser incluída como um submódulo é uma boa idéia, mas sem especificar que isso deve ser feito, a sugestão de um submódulo não parece imediatamente fazer sentido.
Sean Burton