Git: Branch o Fork?


17

Ho un progetto di gioco che avrà due versioni:

  1. Una versione semplice del gioco, il nucleo.
  2. Una versione avanzata del gioco.

Ho la prima versione nel mio repository pubblico e solo io ci lavorerò. Per quanto riguarda la seconda versione, due miei amici e io lavoreremo su di essa. La parte cruciale è che voglio che le due versioni rimangano nel mio repository.

Pensavo di poter usare i rami per questo, ma considerando questa domanda e la sua risposta , non è una buona pratica farlo in termini di versioning. Per quanto ne ho scoperto, non è possibile effettuare il fork del proprio repository.

quali sono le mie opzioni? Come posso conservare entrambe le versioni nel mio repository?


3
Una forcella è un ramo, appena memorizzato in un altro punto.

@MichaelT Ok. Le forcelle devono essere unite ad un certo punto, come i rami?
Varaquilex,

22
Fork è un concetto github, non un concetto git. Clona semplicemente e lo inserisce nel tuo account. Quindi la clonazione è ciò che stai cercando. Vedi stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr

@Varaquilex Way avresti bisogno di conservare entrambe le versioni in un unico repository? Anche forkla creazione di un repository creerà un nuovo repository nel tuo account.
Mahdi,

1
Perché non avere solo una versione che può essere eseguita in modalità semplice o avanzata? Naturalmente alcune parti del codice sarebbero attive solo in modo semplice e alcune parti attive solo in avanzato, ma immagino che molte parti sarebbero condivise.
bdsl,

Risposte:


11

A me sembra che tu abbia bisogno di due repository non due filiali . Un ramo è un meccanismo per gestire le modifiche all'interno di un singolo repository al fine di fonderle con il resto del codice.

Se vuoi davvero mantenere entrambe le versioni di una base di codice simile nello stesso repository, l'unica opzione è quella di scegliere un ramo , tuttavia, come menzionato in precedenza, lo scopo principale di un ramo è di separare alcuni commit specifici in un modo che non sono in conflitto con il resto del codice durante il periodo di sviluppo e li uniscono quando sono pronti a partire.

Ci sono situazioni in cui un repository ha due rami leggermente diversi - ad esempio versioni a 32 e 64 bit dello stesso codice sorgente, tuttavia ti consiglio comunque di scegliere repository separati, se questa è un'opzione.


6

La risposta alla domanda "dovrei clonare o fork" è esattamente la stessa della risposta a questa domanda "voglio la mia versione personale di questo progetto?" yes = fork, no = clona il repository.

In git, il ramo è una cosa leggera che è spesso temporanea e può essere eliminata. Un fork (su github) è un nuovo progetto basato su un progetto precedente. Clonare un repository per lavorarci come membro del team.

Molti progetti pubblici ti costringono a deviare il progetto per mantenere le modifiche operative fuori dal progetto principale.

Per la fase 2, esegui il fork del progetto, quindi clonalo sul tuo computer funzionante e fai fare lo stesso ai tuoi amici.


Come posso fork il mio progetto?
Varaquilex,

seleziona il repository in github quindi fai clic su fork (pulsante in alto a destra per me)
DwB

So come farlo, il fatto è che quando si tenta di clonare il proprio progetto, si viene semplicemente reindirizzati al repository, come se si fosse premuto il pulsante di aggiornamento. Non ci sono repository aggiuntivi elencati quando si sfogliano i repository dopo aver provato a fork il proprio progetto. Penso che farò un nuovo repository, copierò il contenuto dell'altro repository che voglio fare fork e continuare a lavorare con altre persone lì.
Varaquilex,

0

Quello che suona davvero come vuoi è un sottomodulo. Se si crea il primo repository (il proprio repository semplice privato) e quindi lo si aggiunge come sottomodulo al repository di versioni avanzate, allora si dovrebbe essere in grado di tracciare ed estrarre le modifiche al sottomodulo nel repository avanzato mentre si sviluppa il repository semplice privato.


1
Diverse persone hanno preso il tempo per -1 la risposta di Ryan, ma non si sono prese il tempo per fornire un commento sul perché, e questo comportamento va contro lo spirito delle linee guida di SO. Se nella domanda del PO, "nucleo" era identico in entrambi gli alberi, con un involucro "semplice" e "avanzato" attorno al nucleo, allora questa risposta è almeno ragionevole.
Scott Prive,

Ho votato a fondo ma probabilmente dovrebbe includere una spiegazione come la tua che spiega perché un sottomodulo sarebbe buono e come funzionerebbe. Dividere il codice comune in una libreria che può essere inclusa come sottomodulo è una buona idea, ma senza specificare che ciò dovrebbe essere fatto il suggerimento di un sottomodulo non sembra immediatamente avere senso.
Sean Burton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.