Git permet de travailler à plusieurs simultanément sur un même projet. Pour ce faire, chaque développeur possède une copie du même repo sur son ordinateur et partage un repo commun en ligne, généralement sur GitHub, afin de pousser leurs commits.
Ainsi, à chaque fois qu'un développeur 👩 effectue un commit et le push en ligne, son collègue 👨 reçoit une notification sur son logiciel de suivi GIT, par exemple GitHub Desktop, l'avertissant que de nouveaux changements sont disponibles et l'invite à effectuer un pull.
Ce dit collègue 👨 peut attendre avant de récupérer les changements et continuer à travailler / commiter à sa guise. Cependant, Git bloquera toute tentative de push tant qu'il n'aura pas pullé les changements disponibles en ligne.
Bien qu'un repo soit public et que tous puissent le cloner, il est impossible pour quiconque de modifier la version sur GitHub, à moins d'en être l'auteur ou d'en avoir obtenu la permission préalablement.
Évidemment, dans le cadre d'un projet d'équipe, il est primordial de pouvoir donner la permission de modifier le repo à ses collègues. Pour ce faire, il suffit d'aller sur la page GitHub du repo que l'on désire partager et de cliquer sur ⚙️ Settings. Ensuite dans l'onglet Manage access, il est possible de cliquer sur Invite a collaborator et de rechercher le ou les collègues désirés par:
- Nom d'usager GitHub
- Nom complet
- Courriel
À moins de toujours travailler en solo, aucun développeur n'échappe à la problématique d'avoir modifié le même fichier que l'un de ses collègues.
Sans GIT, il n'était pas rare qu'un développeur remplace le fichiers d'un de ses collègues sans réaliser qu'il effaçait du même coups les progrès de celui-ci. Même en portant attention et en tentant de combiner manuellement chaque ligne de code des deux fichier, il était fréquent que des erreurs ou oublies se produisent.
Heureusement GIT peut s'occuper de cette tâche pour nous! Puisque GIT surveille chaque changement dans un projet, il est en mesure de constater si un même fichier a été modifié par une autre personne depuis que nous avons commencer à le modifier. Le cas échéant, GIT sera même en mesure de dire si les lignes modifiées dans ce fichiers sont les mêmes.
Autrement dit, si une autre personne a travaillé dans le même fichier depuis la dernière fois que nous l'avons tiré, mais que cette personne a travaillé sur des lignes différentes, GIT combinera les deux fichiers automatiquement sans que personne ne perde aucun progrès ✨.
Si les lignes de code modifiées sont les mêmes, GIT créera alors ce que nous appelons un "Conflit".
Résolution de conflit 👩❤️👨
Un conflit se produit lorsque nous tentons de pousser des nouveaux changements, alors que d'autres changements ont déjà étés effectués au même endroit sur le repo en lignes depuis la dernière fois que nous avons tiré.
Autrement dit, GIT nous informe qu'il sera impossible pour lui de garder le progrès de tout le monde, qu'une décision devra être prise et nous laisse le soin de faire ce choix.
GIT indiquera quel fichier est touché par le conflit et ajoute des commentaires dans celui-ci pour nous aider à les identifier.
Par exemple:
Il est donc possible de choisir le code le plus pertinent et d'effacer l'autre ainsi que les commentaires.
👏 Comment écrire de bons messages de commit (illustré avec des memes)