Anda akan memiliki "trunk", sekarang disebut "master", Anda akan memiliki "cabang" sekarang disebut "kepala" dan Anda akan memiliki "tag", masih disebut "tag", tetapi mereka tidak akan menjadi folder , mereka akan menjadi " ref ", label untuk revisi yang tinggal di namespace terpisah di dalam repositori.
Subversion dan Git memiliki cara berbeda untuk melakukan percabangan. Model subversi dasar adalah memiliki pohon direktori dengan timeline global tunggal dan jika Anda ingin bercabang, Anda menyalin subtree di direktori lain.
Di sisi lain Git memiliki pohon direktori dengan revisi yang masing-masing mendefinisikan orang tuanya, tetapi setiap revisi dapat memiliki banyak orang tua (gabungan) dan beberapa anak (cabang). Jadi, alih-alih memiliki direktori untuk cabang, Anda mendapatkan revisi yang dibuat secara independen. "Referensi" hanyalah nama yang terkait dengan revisi terbaru untuk "cabang" yang diberikan.
Perbedaan ini mendasar untuk kontrol versi terdistribusi. Git (dan sistem terdistribusi lainnya) tidak memiliki otoritas pusat untuk menjaga sejarah tetap linear, sehingga revisi dapat dibuat secara independen pada beberapa repositori tanpa mengetahui satu sama lain dan sistem harus mengakomodasi mereka. Ternyata generalisasi membuat percabangan dan penggabungan jauh lebih mudah secara umum.
Perhatikan, bahwa di Git, revisi tidak ada di cabang mana pun. Mereka hanya ada dan cabang memuatnya. Tetapi begitu cabang digabung, atau terbukti jalan buntu, Anda bisa menghapus "ref" yang menunjuk padanya dan lupakan semuanya (jika Anda membuang percobaan lama, akhirnya akan dikumpulkan dengan sampah git gc
). Ini membantu Anda menghindari kebanjiran eksperimen lama yang tak seorang pun ingat apa yang sedang mereka bicarakan.