In primo luogo, voglio sottolineare che in git, ogni pull
è letteralmente un'operazione di ramificazione e ogni push
è un'unione. Il master
sul computer di uno sviluppatore è un ramo completamente separato da master
su un repository centrale che condividi, con una posizione di parità dal punto di vista tecnico. Occasionalmente rinominerò la mia versione locale in upstream
o qualcosa se si adatta meglio ai miei scopi.
Lo sottolineo perché molte organizzazioni pensano di utilizzare le filiali in modo più efficace del tuo collega, quando in realtà stanno facendo poco più che creare un nome aggiuntivo per un ramo lungo il percorso, che comunque non verrà salvato nella storia . Se il collega sta commettendo funzionalità in un commit atomico, è altrettanto facile eseguire il back-out come un commit di unione di un ramo di funzionalità. La stragrande maggioranza dei rami delle caratteristiche dovrebbe essere di breve durata e spesso unita in ogni caso.
Detto questo, i principali inconvenienti del suo modo di lavorare sono duplici. Innanzitutto, rende molto difficile collaborare a una funzionalità incompleta. Tuttavia, non sarebbe difficile creare un ramo solo in quei momenti in cui è necessaria la collaborazione.
In secondo luogo, rende molto difficile la revisione prima di unire. Su questo punto, in realtà non è necessario convincerlo. È possibile adottare uno strumento come github, gerrit o gitlab e richiedere revisioni del codice di richiesta pull e test automatici passati per tutte le unioni. Se non stai facendo qualcosa di simile, francamente non stai usando git al suo pieno potenziale, e non c'è da meravigliarsi se il tuo collega non vede quel potenziale.