Avrai "trunk", ora chiamato "master", avrai "rami" ora chiamati "head" e avrai "tag", ancora chiamati "tag", ma non saranno cartelle , saranno " refs ", etichette per le revisioni che vivono in uno spazio dei nomi separato all'interno del repository.
Subversion e Git hanno modi diversi di fare ramificazione. Il modello di sovversione di base è di avere un albero di directory con una singola linea temporale globale e se si desidera ramificare, si copia un sottostruttura in un'altra directory.
D'altra parte Git ha un albero di directory con revisioni che definiscono ognuna i suoi genitori, ma ogni revisione può avere più genitori (una fusione) e più figli (rami). Quindi, invece di avere directory per le filiali, ottieni revisioni create in modo indipendente. I "riferimenti" sono solo nomi associati all'ultima revisione per un determinato "ramo".
Questa differenza è fondamentale per il controllo della versione distribuita. Git (e altri sistemi distribuiti) non ha alcuna autorità centrale per mantenere la cronologia lineare, quindi le revisioni possono essere create in modo indipendente su più repository senza conoscersi e il sistema deve adattarle. Si scopre che la generalizzazione rende la ramificazione e l'unione molto più facile in generale.
Si noti che in Git le revisioni non sono presenti in alcun ramo. Lo sono e i rami li contengono. Ma una volta che il ramo viene unito, o si rivela essere vicolo morto, puoi semplicemente eliminare il "ref" che lo indica e dimenticartene del tutto (se scarti le vecchie prove, alla fine verranno spazzate via git gc
). Questo ti aiuta a evitare di essere sommerso da vecchi esperimenti che nessuno ricorda più di cosa si trattasse.