Git est un gestionnaire de versionning.
Sa particularoté est qu'il est distributé : pour modifier les sources d'un projet, on clone tout le projet en local (avec l'hitorique des modification), puis on fait des modifications en local, puis on commit dans le repository Git local puis on pousse les modifications (push) vers le repository de distant de référence.
Site de référence : https://git-scm.com
Documentation : https://git-scm.com/doc
La totalité des actions se fait en ligne de commande avec le CLI "git". On peut utiliser une interface graphique mais ce n'est pas une obligation.
# apt-get update # apt-get install git
Phase préparatoire : initialisation Git.
A noter que la commande "git init" crée un répertoire ".git" qui est un repository Git local.
Il faut personnaliser le repository local avec son nom et son email afin que les commit aient le bon user.
$ pwd /home/laurent/my_projects $ git init Dépôt Git vide initialisé dans /home/laurent/my_projects/.git/ $ ls -la .git total 40 drwxr-xr-x 7 laurent laurent 4096 mai 19 12:18 . drwxr-xr-x 3 laurent laurent 4096 mai 19 12:18 .. drwxr-xr-x 2 laurent laurent 4096 mai 19 12:18 branches -rw-r--r-- 1 laurent laurent 92 mai 19 12:18 config -rw-r--r-- 1 laurent laurent 73 mai 19 12:18 description -rw-r--r-- 1 laurent laurent 23 mai 19 12:18 HEAD drwxr-xr-x 2 laurent laurent 4096 mai 19 12:18 hooks drwxr-xr-x 2 laurent laurent 4096 mai 19 12:18 info drwxr-xr-x 4 laurent laurent 4096 mai 19 12:18 objects drwxr-xr-x 4 laurent laurent 4096 mai 19 12:18 refs $ git config --list core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true $ git config --global user.name "Laurent Bourcier" $ git config --global user.email lbourcier@datalbi.com $ git config --global core.editor vi $ git config --list user.name=Laurent Bourcier user.email=lbourcier@datalbi.com core.editor=vi core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true
On peut enfin cloner un projet
$ git clone https://github.com/oakmac/chessboardjs.git Clonage dans 'chessboardjs'... remote: Enumerating objects: 1353, done. remote: Total 1353 (delta 0), reused 0 (delta 0), pack-reused 1353 Réception d'objets: 100% (1353/1353), 717.31 KiB | 332.00 KiB/s, fait. Résolution des deltas: 100% (815/815), fait. $ ls -la total 16 drwxr-xr-x 4 laurent laurent 4096 mai 19 12:25 . drwxr-xr-x 3 laurent laurent 4096 mai 19 12:20 .. drwxr-xr-x 9 laurent laurent 4096 mai 19 12:25 chessboardjs drwxr-xr-x 7 laurent laurent 4096 mai 19 12:18 .git $ cd chessboardjs/ $ git status Sur la branche master Votre branche est à jour avec 'origin/master'. rien à valider, la copie de travail est propre
La commande "git add" permet a ajouter des fichiers prets à être commités en local.
La commande "git commit" permet de commiter les fichiers ajoutés.
# On modifie un fichier $ vi src/chessboard.js $ git status Sur la branche master Votre branche est à jour avec 'origin/master'. Modifications qui ne seront pas validées : (utilisez "git add..." pour mettre à jour ce qui sera validé) (utilisez "git checkout -- ..." pour annuler les modifications dans la copie de travail) modifié : src/chessboard.js aucune modification n'a été ajoutée à la validation (utilisez "git add" ou "git commit -a") $ git add src/chessboard.js $ git status Sur la branche master Votre branche est à jour avec 'origin/master'. Modifications qui seront validées : (utilisez "git reset HEAD ..." pour désindexer) modifié : src/chessboard.js $ git commit -m "Modification Laurent Bourcier" [master 9706194] Modification Laurent Bourcier 1 file changed, 1 insertion(+), 1 deletion(-) $ git status Sur la branche master Votre branche est en avance sur 'origin/master' de 1 commit. (utilisez "git push" pour publier vos commits locaux) rien à valider, la copie de travail est propre