Aller au contenu principal
Bonnes pratiques Git · 01

Configuration
du poste

Une configuration commune pour que chaque poste produise le même historique, les mêmes fins de ligne et les mêmes fichiers ignorés.

Objectif

Être prêt à cloner, commiter et pousser sur le GitLab AGITEX dès le premier jour, avec des réglages qui évitent les erreurs courantes.

1. Déclarer son identité​

Chaque commit porte un nom et une adresse. Utilisez votre adresse professionnelle, celle de votre compte GitLab, pour que vos commits vous soient correctement attribués.

git config --global user.name "Prénom Nom"
git config --global user.email "prenom.nom@agitex.fr"

git config --global --list # vérifier

2. Créer et enregistrer une clé SSH​

L’accès aux dépôts se fait en SSH, avec une clé protégée par une phrase de passe.

ssh-keygen -t ed25519 -C "prenom.nom@agitex.fr"
# accepter l'emplacement proposé, saisir une phrase de passe

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519 # la phrase de passe n'est demandée qu'une fois par session

cat ~/.ssh/id_ed25519.pub # clé PUBLIQUE à copier dans GitLab

Dans GitLab : Préférences › Clés SSH, collez la clé publique et fixez une date d’expiration. Vérifiez ensuite la connexion :

ssh -T git@git.agitex.fr
danger

Seule la clé publique (.pub) se partage. La clé privée ne quitte jamais votre poste, n’est jamais envoyée par messagerie et n’est jamais commitée.

Clonez ensuite en SSH, et basculez en SSH un dépôt cloné en HTTPS :

git clone git@git.agitex.fr:agitex-labs/agitex-codex.git

git remote set-url origin git@git.agitex.fr:agitex-labs/agitex-codex.git
git remote -v

:::warning Jamais de jeton dans l’URL du dépôt Une URL de la forme https://utilisateur:jeton@git.agitex.fr/... enregistre le jeton en clair dans .git/config, et il s’affiche à chaque git remote -v. Si vous devez rester en HTTPS, laissez un gestionnaire d’identifiants le conserver (git config --global credential.helper libsecret sous Linux, manager sous Windows) et utilisez un jeton personnel à durée limitée. :::

3. Appliquer la configuration recommandée​

# branche par défaut des nouveaux dépôts
git config --global init.defaultBranch main

# git pull rebase au lieu de fusionner, en mettant de côté le travail en cours
git config --global pull.rebase true
git config --global rebase.autoStash true

# nettoyer les références des branches distantes supprimées
git config --global fetch.prune true

# premier push d'une branche sans --set-upstream
git config --global push.autoSetupRemote true

# conflits plus lisibles : affiche aussi la version de l'ancêtre commun (Git ≥ 2.35)
git config --global merge.conflictStyle zdiff3

# mémoriser la résolution des conflits qui se répètent
git config --global rerere.enabled true

# visualiser le graphe
git config --global alias.lg "log --all --decorate --oneline --graph"

Fins de ligne, selon votre système :

# Linux et macOS
git config --global core.autocrlf input

# Windows
git config --global core.autocrlf true
astuce

Sur un poste qui n’a pas cette configuration, pensez à taper explicitement git pull --rebase. Un git pull par défaut crée des commits « Merge branch 'develop' of … » qui brouillent l’historique.

4. Ignorer ce qui n’a rien à faire dans le dépôt​

Chaque projet versionne un .gitignore à sa racine. Base commune pour nos projets Spring Boot et Angular :

# Java / Maven / Gradle
target/
build/
*.class
.gradle/

# Angular / Node
node_modules/
dist/
.angular/
coverage/

# Environnement et secrets
.env
.env.*
!.env.example
*.pem
*.key

# IDE et système
.idea/
.vscode/*
!.vscode/extensions.json
*.iml
.DS_Store
Thumbs.db

# Journaux
*.log

Les fichiers propres à votre poste (IDE, système) peuvent aussi aller dans un .gitignore global :

git config --global core.excludesFile ~/.gitignore_global
attention

.gitignore n’agit que sur les fichiers non suivis. Un fichier déjà commité doit être retiré du suivi avec git rm --cached <fichier>. S’il contient un secret, celui-ci reste dans l’historique : il faut le révoquer (voir Sécurité du dépôt).

5. Normaliser les fins de ligne avec .gitattributes​

Un .gitattributes versionné garantit les mêmes fins de ligne pour tous, quel que soit le système. C’est une source fréquente de faux conflits entre postes Windows et Linux.

* text=auto eol=lf

*.bat text eol=crlf
*.cmd text eol=crlf

*.png binary
*.jpg binary
*.pdf binary
*.jar binary

Vérification rapide​

ContrôleCommande
Identité correctegit config user.email
Accès SSH au GitLabssh -T git@git.agitex.fr
Configuration appliquéegit config --global --list
Fichiers ignorés pris en comptegit status --ignored