GIT Utilisation simple
Cette page indique comment utiliser GIT simplement.
Attention ici je vais parler de client et de serveurs mais GIT n'est pas vraiment organisé comme cela. Git est pas nature distribué. On peut faire des dépôts git ou on veut et on peut faire un "push" ou un "pull" vers ou depuis n'importe que autre dépôt.
Le concept de serveur est juste une machine qui contiendra un dépôt commun sur lequel d'autres machines pourront référencer leur dépôts. Mais un dépôt git peu faire des "push" ou "pull" vers ou depuis de multiples autres dépôts. Un développeur peut faire un push dans le dépôt d'un autre développeur. Une équipe peut avoir un dépôt à elle avec de multiples développeurs dessus et le push global sera fait depuis le dépôt de cette équipe. La notion de branche est plus adaptée à ce principe mais tout est possible.
Création d'un dépôt sur le serveur
On va parti du principe que l'on a un serveur qui contiendra les dépôts de références. Les autres seront des clients.
Donc sur le serveur on va créer un dépôt "brut". Il ne contiendra que les diverses versions de son contenu. Il ne sera jamais utilisé pour visualiser/éditer le contenu.
Utilisateur git.
Sur le serveur on va créer un user git dans lequel on stockera les repository. (on pourrait en créer d'autres si on veut gérer des droits plus fins).
sudo adduser git
su - git
Password: <le mote de passe>
mkdir repo
cd repo
on a crée le repository racine de notre instance de git!
Création d'un repository
git init --bare sample.git
--bare signifie que l'on veut un dépôt "brut". le nom des repository "bare" sont par convention terminé par un .git mais ce n'est pas une aubligation. Ma version m'averti que la branche par défaut est "master" mais que je peux la changer.
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /home/jpinon/repo/sample.git/
De mon côté "master" me va très bien. Je ne changes rien!
Suppression d'un repository
Le répertoire .git est autoporteur. Pour supprimer le repository on utilise donc la commande:
cd $HOME/repo
rm -rf sample.git
Attention ce n'est pas réversible!
Accès sur un client
Clonage d'un repo du serveur
Chez le client je peux créer un dépôt local dans lequel je vais travailler par:
cd sources # par exemple je mets mes sources là!
git clone git@git:repo/sample.git
Le premier git (avant le @) est le user et le second est le serveur. Ca nous demande le mot de passe (si on n'a pas configuré de clé ssh) et ça nous indique que tout s'est bien passé.
Cloning into 'sample'...
git@git's password:
warning: You appear to have cloned an empty repository.
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Ca nous refait le laïus sur la branche par défaut. Comme je l'ai pas changé sur le serveur on peut l'ignorer ici.
Ca nous crée un répertoire sample.
un simple :
ls -al sample
Nous donne:
total 12
drwxrwxr-x 3 moi users 4096 Jan 4 22:04 .
drwxrwxr-x 5 moi users 4096 Jan 4 22:04 ..
drwxrwxr-x 7 moi users 4096 Jan 4 22:04 .git
Comme dit dans le laïus ci-dessus le repo étant vide le répertoire est vide. Sauf le répertoire .git est là. Il est utilisé pour stocker tout ce que l'on va faire sur notre code source.
Ajout d'un fichier.
Pour ajouter un fichier on crée simplement un fichier dans le répertoire racine du dépôt.
cd $HOME/sources/sample
cat > README.MD
# Examples
Ce repo va contenir des exemples d'utilisation de GIT
## Cmlient simple
Comment acceder depuis un client simple
## Comment lier a un autre serveur
On termine par un <ctrl> + D.
Si on fait un ls on a bien le fichier README.MD.
Il faut ensuite l'ajouter dans le dépôt. Sinon il restera un fichier local.
git add README.MD
Il est maintenant référencé dans le dépot. Cependant son contenu n'est pas pris en compte. Pour cela il faut valider (commit) son contenu. Il est obligatoire de donner un message qui décrit ce que l'on a fait sur le dépôit.
git commit -m "version initiale"
Qui, la toute première fois, nous dit que le dépôt n'en sait pas assez sur nous!
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'moi@mamachine.(none)')
On va sagement faire ce que git nous demande:
git config --global user.email "moi@mondomaine.com"
git config --global user.name "John DOE"
On refait le git commit -m "version initiale"
Et on a alors le message :
[master (root-commit) ca00b3c] version initiale
1 file changed, 5 insertions(+)
create mode 100644 README.MD
Avec :
git log
On a les logs de tout ce qui viens de se passer:
commit ca00b3c97078b62071769686978621ae9aab30ee (HEAD -> master)
Author: John DOE <moi@mondomaine.com>
Date: Sun Jan 4 22:35:20 2026 +0100
version initiale
On va le pusher sur le serveur:
git push
La version courante chez nous est alors sur le serveur.
Si je modifie le fichier en local avec un vi README.MD pour corriger une ligne.
On le change
# Examples
Ce repo va contenir des exemples d'utilisation de GIT
## Client simple
Comment accéder depuis un client simple
## Comment lier a un autre serveur
et on commite de nouveau
git add .
git commit -m "Nouvelle version"
QU nous réponds:
[master cb11e38] Nouvelle version
1 file changed, 1 insertion(+), 1 deletion(-)
Si je fais un git log:
commit cb11e388e49b5f9efd0f4f249bdd01edee5900e9 (HEAD -> master)
Author: John DOE <moi@mondomaine>
Date: Sun Jan 4 22:47:34 2026 +0100
Nouvelle version
commit ca00b3c97078b62071769686978621ae9aab30ee (origin/master)
Author: John DOE <moi@mondomaine>
Date: Sun Jan 4 22:35:20 2026 +0100
version initiale
C'est très intéressent.
On a deux versions. La version ca00b3c.... (celle commitée la première fois) est sur le serveur (origin/master) et la cb11e38... qui est en local (HEAD -> master).
origin/masterveut dire la branchemastersur le dépôtorigin. Origin est le dépôt par défaut crée par legit clone. C'est là que l'on applique les push/pull si on n'en précise pas un autre.HEAD -> mastersignifie la tête (le haut) de la branchemasteren local.
On remarque aussi que le commentaire transmis avec le -m apparait dans les logs.
Si on refait un git push, le git log représentera alors :
commit cb11e388e49b5f9efd0f4f249bdd01edee5900e9 (HEAD -> master, origin/master)
Author: John DOE <moi@mondomaine>
Date: Sun Jan 4 22:47:34 2026 +0100
Nouvelle version
commit ca00b3c97078b62071769686978621ae9aab30ee
Author: JJohn DOE <moi@mondomaine>
Date: Sun Jan 4 22:35:20 2026 +0100
version initiale
C'est bien la version cb11e38... qui est référencée à la fois en local HEAD -> master qu'en distant origin/master.