graph TD
Dev1[Poste Dev 1] -->|push / pull| GitServer[(Serveur Git central)]
Dev2[Poste Dev 2] -->|push / pull| GitServer
Dev3[Poste Dev 3] -->|push / pull| GitServer
Dev4[Poste Dev 4] -->|push / pull| GitServer
Principe général de GIT
Git est un système de gestion qui permet de suivre les modifications d’un projet lorsqu'on travaille à plusieurs.
C'est d'ailleurs surtout un gestionnaire de version : il permet de revenir à une version précédente si besoin, même si vous travaillez seul !
Git est un système libre (et gratuit) concu pour gérer n'importe quelle taille de projet de façon rapide et efficace.
Le principe général est de permettre à plusieurs personnes de travailler sur sa propre machine et d'envoyer son code et récupérer le code réalisé par les autres.
De nombreux services en ligne disponible :
gitea (facilement intégrable sur Always Data, exemple )
github
gitlab
Différentes étapes et mots de vocabulaire à comprendre
Voici quelques mots de vocabulaire et les étapes associées, à comprendre impérativement :
Analogie des trois actions add commit push
Local repository (repo) : votre dossier local (sur votre ordinateur) contenant votre version du projet ET l'historique Git des modifications effectuées.
Working directory : les fichiers tels qu’ils sont sur votre ordinateur.
Staging area (index) (zone de préparation) : la commande git add permet de placer les modifications faites sur un fichier dans un "colis" de modifications. Chaque git add rajoute dans quelque chose dans votre paquet.
Commit (validation des modifs ajoutées) : une demande de fermeture du paquet de modification, avec un message explicatif si possible. On utilise la commande git commit. Attention, pour le moment, le colis est rempli et refermé mais pas encore envoyé !
Le principe est donc de placer à l'aide de plusieurs git add des modifications liées dans un seul git commit. Il est bien entendu possible de réaliser un commit pour chaque add, ou de placer dans un commit des modifications qui ne sont pas vraiment liées.
123456
gitaddfichier1.txt
gitaddfichier2.txt
gitcommit-m"mise à jour 1 : modification de deux fichiers"gitaddfichier2.txt
gitcommit-m"mise à jour 2 : petit oubli dans le fichier 2, c'est rectifié !"
Attention : modifier le fichier2.txt ne suffit pas à prendre en compte ces modifications pour l'envoi : il faut refaire un add ! Sinon, vous envoyez uniquement les modifications effectuées lors du commit 1.
Distance repository (remote) : il s'agit du dépôt de votre projet sur un site hébergeant un serveur GIT. Maintenant que vous avez modifié votre projet sur votre ordinateur, il va falloir envoyer ces modifications vers le serveur en ligne. Cela se fait avec git push..
1
gitpushoriginmaster
Cette fois, vos modifications sont vraiment envoyées en ligne. Les autres utilisateurs du dépôt pourront voir vos modifications.
Sur linux : sudo apt install git, en remplaçant apt pour le nom du service de gestion des paquets de votre distribution. Bonne pratique : pensez à mettre à jour apt (ou équivalent) avant de lancer la commande d'ailleurs (sudo apt update et autres variantes).
Sur mac : brew install git
Une fois le programme installé, vérifiez qu'il est bien utilisable en lançant git --version.
Cela ne fonctionne pas !
Si cela ne fonctionne pas avec Windows, c'est que votre variable d'environnement Path ne contient pas l'adresse du répertoire qui contient l'exécutable git.exe/
Cherchez le répertoire où se trouve le fichier git.exe et modifiez votre Path pour y rajouter le chemin complet du répertoire.
Fermer votre console puis lancez git --version pour vérifier si cela a résolu le problème. Si cela ne fonctionne toujours pas, redémarrez le système. Si cela ne fonctionne toujours pas, il va falloir m'appeller../
Localiser un programme
which git vous permet sur un système compatible UNIX (Linux, MAC, console Powershell sur Windows) de voir où se trouve le binaire de git.
Sur Windows, vous pouvez aussi utiliser where.exe git.exe.
S'inscrire sur un service GIT en ligne
Aller sur le service qui vous intérresse et réaliser l'inscription de façon à avoir un alias et un mot de passe.
Si vous ne voulez pas vous inscrire sur une plateforme de type gitlab ou github, vous pouvez venir sur git.infoforall.fr mais il faudra me demander de valider avant de pouvoir utiliser votre compte.
Créer votre profil sur votre ordinateur
Ouvrir un terminal de façon à associer votre alias/nom et votre email à votre service git local à votre machine :
--global signale ici que ces informations pourront être utilisées sur tous les dépôts GIT sauf indications plus précises de votre part.
Il existe trois niveaux de définitions :
-system : dans ce cas, les identifiants sont donnés pour tous les utilisateurs.
--global : les identifiants sont donnés pour un utilisateur spécifique et tous ses dépôts.
--local : il faut avoir créer un dépôt précis avant de l'utiliser (partie suivante) et dans ce cas, les identifiants ne seront valables que pour ce dépôt spécifique. Elles remplacent donc celles que vous avez par défaut avec --global.
Cette partie vous explique comment créer un projet qui n'existe encore nul part.
Se connecter sur le dépôt distant.
Localiser le bouton permettant de créer un nouveau dépôt et deux solutions s'offrent à vous :
soit vous lui donner juste un nom et vous le laissez vide (et dans ce cas, il faudra poursuivre cette partie) : on vous explique comment faire le lien entre votre poste de travail et ce dépôt vide.
soit vous localiser la coche qui vous permet de l'initialiser avec un premier fichier (souvent README.md, un fichier texte markdown permettant d'écrire du contenu plus facilement qu'en HTML). Dans ce cas, il faudra partir voir la partie 4 de cette page : on vous explique comment faire le lien entre un dépôt distant non vide et votre psote de travail.
Si vous êtes ici, c'est que vous n'avez pas trouver la coche permettant d'initialiser automatiquement le dépôt.
Voici comment le faire manuellement :
Récupérer l'URL de votre dépôt en ligne (elle est habituellement fournie sur la page Web de votre projet).
Faire pointer un terminal sur le répertoire de votre PC qui va héberger le projet localement (soit avec la commande cd, soit en ouvrant manuellement la console au bon endroit avec un clic droit).
Utiliser ces commandes pour créer le répertoire de votre projet avec mkdir, se déplacer dedans avec cd et en faire un dépôt GIT local avec git init.
Cette dernière commande vient de dire à votre programme git de créer un nouveau dépôt local que git va surveiller désormais.
Nous allons créer localement un petit fichier markdown vide nommé REAMDE.md qui à terme va contenir la description de votre projet :
Sous Linux ou Mac :
1
touchREADME.md
Sous Windows ? Désinstaller Windows, placer une distribution Linux ou alors utiliser simplement cette commande :
1
typenul >README.md
Il n'y a plus qu'à rajouter le fichier à un paquet et finaliser le paquet avec un commit. D'ailleurs, on ne parlera plus de paquet mais juste de validation ou de commit :
12
gitaddREADME.md
gitcommit-m"first commit"
Reste que pour le moment, il n'y a pas de lien entre votre dépôt git local et le dépôt git distant (qu'on nomme souvent origin. Nous allons y remédier maintenant. Cette opération n'est à réaliser qu'une seule fois puisque la liaison sera enregistrée.
L'URL ressemble par exemple à
https://git.infoforall.fr/utilisateur/mon-projet.git ou
https://github.com/utilisateur/mon-projet
.git
Traduction : on pousse/envoie les commits enregistrés vers le dépôt distant origin en envoyant la branche local master.
Et voilà, c'est fini : votre commit est prêt et la liaison est fournie : il reste simplement à transmettre avec git push :
1
gitpushoriginmaster
Presque fini : le système va vous demander votre alias/nom et votre mot de passe (pour le site distant). Attention : sur les systèmes Linux, rien n'apparaît lorsque vous tapez un mot de passe. C'est normal.
Bien entendu, si vous avez trouvé la case à cocher ou si quelqu'un a déjà initialisé le dépôt distant, tout va être bien moins long. Voir partie suivante.
Vous savez maintenant créer ou cloner un dépôt distant et envoyer des modifs avec git pull.
graph TD
Dev1[Poste Dev 1] -->|push / pull| GitServer[(Serveur Git central)]
Dev2[Poste Dev 2] -->|push / pull| GitServer
Dev3[Poste Dev 3] -->|push / pull| GitServer
Dev4[Poste Dev 4] -->|push / pull| GitServer
Pour récupérer les modifications que les autres développeuses/développeurs ont réalisé, il faut utiliser git pull :
1
gitpulloriginmaster
Traduction : on tire/récupère la branche master du sute distant origin.
En résumé, git pull permet donc de mettre à jour le dépôt local par rapport au contenu du dépôt distant.
Alors, pourquoi ce meme ? Car git pull récupère et vous transmet les modifications ET les applique. Même si les modifications font des choses étranges. Bref, aucune vérifications.
En réalité, l'action de git pull peut se décomposer manuellement en deux actions élémentaires :
git fetch qui récupère les modifications depuis le dépôt distant mais ne les applique pas !
Vous pouvez regarder ce que sont ces modifications avec git log origi/master.
git merge origin/master qui réalise la fusion.
Les problèmes surviennent quand on finit par modifier les mêmes lignes de code. Cela va nécessiter de faire des choix anuellement, GIT ne peut pas choisir à votre place !