Datalbi  
Créé le 19/05/2019 par Laurent Bourcier

Introduction à Git

Sommaire
1. Introduction
2. Installer Git sous Debian
3. Créer ou cloner un projet en local
4. Gérer les modifications

Introduction

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.

Installer Git sous Debian

# apt-get update
# apt-get install git

Créer ou cloner un projet en local

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

Gérer les modifications

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