Qui ci sono un paio di cose che devono essere affrontate.
Per prima cosa, ci sono le due basi di codice. Hai il tuo codice. Il tuo amico ha il suo codice. Quando fai una fusione (in qualche modo) lo stai facendo senza la possibilità di vedere le modifiche precedenti.
Non hai bisogno di github per farlo. Si può avere un master repo git su una pen drive, e quindi fondersi da e verso. Github rende più facile farlo (e più difficile da perdere). Lavorando dalla pen drive, però, non avresti un set completo di tutorial su come usarlo o le altre cose che github ha che sono piuttosto carine.
Successivamente, ci sono i problemi. Non hai una chiara divisione del lavoro e il monitoraggio di questo lavoro:
- Chi sta lavorando a cosa?
- Quali modifiche correggono cosa?
Il trackup dei problemi di github all'interno di github ti consente di assegnare chi sta lavorando su un determinato problema e identificare quale stato è dentro. Si aggancia anche se tagghi il commit con il numero del problema, che poi ritorna nella parte di Github del tracker dei problemi. Questo rende chiaro quando in seguito vuoi tornare indietro e vedere "cosa ho modificato per far funzionare il numero 5?" - puoi andare al numero 5 e vedere i commit.
Questo non impedisce comunque a nessuno di lavorare su qualcosa. Tu o il tuo amico potreste ignorare il tracker dei problemi e lavorare su qualsiasi cosa. Lavorare con altre persone richiede disciplina: comunicare correttamente ciò che si sta facendo, prendere compiti, completare compiti e dire che sono fatti e quindi spostare le modifiche in un posto dove altre persone nel progetto possono farne uso.
Se tu o il tuo collaboratore non siete disciplinati a farlo, avrete problemi.
Git o qualsiasi VCS non risolveranno il problema di "in pratica cosa sta succedendo è che lavoriamo alla stessa identica cosa, o scriviamo codice per componenti che non funzionano con componenti che l'altra persona ha scritto" sul suo proprio. Oggi potresti farlo - scrivere tutte le specifiche su carta e avere una pila di schede con tutte le cose che devono essere fatte. Divvy le schede e lavoraci secondo le specifiche scritte. Nessun git coinvolto in quel processo. Un sistema di controllo versione online lo rende più facile per farlo, se sei disposto a lavorare con esso. Ma, se non hai intenzione di prendere provvedimenti per essere effettivamente disciplinato nelle tue abitudini di lavoro, in primo luogo, sarà solo un lavoro noioso extra.
Come sopraffare? No. Non è eccessivo. È un set di strumenti molto utile che ha molte funzionalità che userete un giorno. Ci sono sistemi di controllo delle versioni più semplici (ho usato RCS nel corso della giornata e ha funzionato bene per i miei progetti universitari con partner (ubriaco i check-in sono più facili da ripristinare piuttosto che chiedere al personale del laboratorio un ripristino dal backup notturno). A parte la natura del cloud e del server di git, aveva solo una ripida curva di apprendimento come RCS.
Si noti che molti IDE oggi hanno integrato il supporto git che rende molto più semplice l'utilizzo. Hai taggato con netbeans - considera la lettura di Utilizzo del supporto Git nell'IDE di NetBeans .