1 - Sur le serveur Git
1.1 - Installation de "git"
Ajout du "PPA (Personal Package Archive) officiel" fournit pat Git :
$ sudo add-apt-repository ppa:git-core/ppa
Mise à jour du "repository" utilisé par "apt-get" :
$ sudo apt-get update
Installation de Git
$ sudo apt-get install git
Test d'utilisation de Git
$ git --version
git version 2.11.0
( Pour désinstaller Git et toutes ses dépendances :
$ sudo apt-get remove --auto-remove git )
1.2 - Création du user "git"
$ sudo adduser git
Saisie du password pour le user "git"
$ su git
$ cd
$ pwd
/home/git
1.3 - Création d'un "repository" vide
$ cd /opt/git
$ mkdir project1.git
$ cd project1.git
$ git init --bare
( l'option "
--bare" sert à initialiser un dépôt sans répertoire de travail )
$ ls -lisa
Structure classique des fichiers et répertoire git :
branches
config
description
HEAD
hooks
info
objects
refs
2 - Sur le "client" Git
Sur le poste qui va se connecter au serveur...
2.1 - Mise en place de la connexion "ssh" avec clé publique
- Test de la connexion ssh avec mot de passe :
( sous Windows utiliser "Git Bash" qui permet de travailler en ligne de commande )
$ ssh git@<hostname>
En l'absence de clé publique le mot de passe est demandé
- Génération des clés ( clé publique et clé privée ) si elles n'existent pas déjà
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which you want to save the key (xxx/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in xxx/.ssh/id_rsa.
Your public key has been saved in xxx/.ssh/id_rsa.pub.
The key fingerprint is :
...
The key’s ramdonart image is:
...
2 fichiers sont générés dans le répertoire
$HOME/.ssh de l’utilisateur :
-
id_rsa ( la clé privée )
-
id_rsa.pub ( la clé publique )
- Copie de la clé publique sur le serveur git pour le user "git"
$ ssh-copy-id -i ~/.ssh/id_rsa.pub git@<hostname>
git@<hostname>’s password:
Number of key(s) added: 1
Now try to logging into the machine,
with "ssh 'git@<hostname>‘”
- Test de la connexion ssh sans mot de passe :
$ ssh git@<hostname>
Le mot de passe n'est plus demandé
L'accès en "ssh" sans mot de passe est maintenant OK.
Git va donc pouvoir utiliser le serveur remote avec le protocole "ssh"
2.2 - Utilisation de Git en SSH à partir du poste client
Initialisation du repository local (sur le poste client)
$ git init
Création d'un fichier (par exemple un simple fichier ".txt" )
Staging et commit du nouveau fichier
$ git add .
$ git commit -m "Initial commit"
Définition du serveur "remote" avec un chemin absolu (SSH est le protocole par défaut)
$ git remote add origin git@<hostname>:/opt/git/project1.git
$ git remote -v
origin git@<hostname>:/opt/git/project1.git (fetch)
origin git@<hostname>:/opt/git/project1.git (push)
ou avec le préfixe "ssh://" pour être plus explicite
$ git remote add origin ssh://git@<hostname>:/opt/git/project1.git
Pour utiliser un chemin relatif : "
/~" = répertoire "home" de l'utilisateur (ici home de "git")
$ git remote add origin ssh://git@<hostname>:/~/project1.git
Pour faire un "
push" sur le serveur "remote"
$ git push origin master
Vérification du résultat du "push" sur le serveur (remote) :
Côté serveur :
$ git log
Le commit fait côté client doit apparaitre dans le résultat de la commande
Pour faire un "
fetch" à partir du serveur "remote"
$ git fetch
3 - Au-delà du protocole SSH
Le serveur Git peut être adressé avec différents protocoles
- file://
- ssh://
- git://
- http://
- https://
Le protocole git:// nécessite de lancer le "git daemon" sur le serveur,
il permet un accès non authentifié mais n'est pas "internet friendly" (il écoute sur un port spécifique, le 9418 par défaut)
Le protocole http:// ou https:// suppose la mise en place d'un serveur http,
généralement "Apache" avec utilisation de WebDAV ou du script CGI "git-http-backend"