Configuration Git sous Windows avec GitHub / GitLab, token et Visual Studio Code
Cette procédure décrit la configuration d'un poste Windows pour travailler avec des dépôts Git hébergés sur GitHub ou GitLab Self-Managed interne de La Poste, depuis Git Bash et Visual Studio Code.
1.
La Environnementméthode cibleprésentée
https://gitlab.pop.sf.intra.laposte.frcaas2.1. Principe général
LeGitHub et GitLab peuvent utiliser une authentification différente de celle utilisée pour accéder à leur interface Web.
Lorsque l'authentification par mot de passe classique n'est pas disponible, notamment avec le SSO ou la double authentification, un token est utilisé pour seles connecter à GitLab dans le navigateur et l'authentification utilisée paropérations Git neen sont pas nécessairement les mêmes.HTTPS.
NavigateurVisual Studio Code / Git Bash
|
+--> SSO La Poste
|
+--> GitLab
Git / VS Code
|
+--> HTTPS
|
+-->v
Git Credential Manager
|
+--> Personal Access| Token
|v
+-->GitHub ou GitLab
Avec Git overCredential HTTPS,Manager GitLabpermet utilisede gérer les informations d'authentification sans avoir à stocker manuellement le Personaltoken Accessdans Token comme mot de passe. Lorsqu'un comptefichier utilise SAML/SSOtexte ou 2FA,dans unl'URL PATdu peut être nécessaire pour les opérations Git HTTPS. citeturn0search0dépôt.
3.2. Pré-requisPrérequis
4.3. CréerChoisir unGitHub ou GitLab
La procédure Git est quasiment identique pour GitHub et GitLab. La principale différence concerne la création et les permissions du token.
4. Créer le token
Le token doit être créé depuis les paramètres du compte de la plateforme utilisée.
4.1 AccéderGitHub
Dans GitHub, accéder aux paramètres du compte puis à la gestion des Personal Access Tokens.
GitHub propose notamment les tokens Fine-grained, qui permettent de limiter les permissions à certains dépôts et à certaines opérations.
Pour un usage Git classique, accorder uniquement les permissions nécessaires à la lecture et à l'écriture des dépôts concernés.
4.2 GitLab
SeDans connecterGitLab, àaccéder GitLabau avec le SSOprofil puis ouvrirà :
Avatar
|
+--> Edit profile
|
+--> Access
|
+--> Personal access tokens
GitLab documente actuellement ce chemin pour créerPour un Personalusage AccessGit Token.HTTPS citeturn0search0
4.2 Créerclassique, le token
scope Exemple de configuration :
VS Code - Windowswrite_repository 4.3 Scope nécessaire
Pourpermet les opérations de lecture et d'écriture nécessaires au dépôt.
5. Bonnes pratiques pour le token
Donner au token uniquement les permissions nécessaires.
Pour un usage Git classiquesclassique :
clone
fetch
pull
push
il faut disposer de droits permettant au minimum la lecture du dépôt et, pour le scopepush, de write_repositorydonnedroits d'écriture.
Expiration
Lorsque la plateforme le permet, définir une date d'expiration adaptée à la politique de lecture et d'écriture nécessaires sur les repositories accessibles au token. citeturn0search3
Il n'est pas nécessairesécurité de donner le scope api uniquement pour effectuer des opérations Git.l'organisation.
4.4Stockage Sauvegarder ledu token
Le token complet peut n'est généralementêtre affiché qu'au moment de sa création. Il faut donc leLe conserver temporairement dans un gestionnaire de secrets/mots de passe appropriéou de secrets si nécessaire. citeturn0search0
5.6. VérifierInstaller et vérifier Git sous Windows
Ouvrir Git Bash ou le terminal intégré de Visual Studio Code.
Vérifier la version de Git :
git --version
Exemple :
git version 2.49.0.windows.1
Une version récente de Git pour Windows inclut généralement Git Credential Manager.
6.7. Vérifier Git Credential Manager
Git Credential Manager permet à Git de gérer les informations d'authentification sans avoir à stocker manuellement un token dans un fichier texte.
Vérifier sa versionprésence :
git credential-manager --version
Exemple :
2.6.1+786ab03440ddc82e807a97c0e540f5247e44cec61
VérifierEffectuer leensuite un diagnostic :
git credential-manager diagnose
UnLe résultat avec Credential storage [ OK ] indiquedoit notamment indiquer que le stockage des credentials est fonctionnel.fonctionne.
7.8. Vérifier quele credential helper Git utilise Git Credential Manager
Exécuter :
git config --show-origin --get-all credential.helper
RésultatUn attendurésultat contenant :
manager
indique que Git utilise Git Credential Manager.
Exemple :
file:C:/Program Files/Git/etc/gitconfig manager
9. Ne pas créer manuellement .gitcredentials
CelaLorsque signifie que Git utilise Git Credential Manager.
Ilest installé et configuré, il n'est donc pas nécessaire de créer manuellement un fichier .gitcredentials.
8. Ne pas créer manuellement .gitcredentials
La configuration recommandéeIl est déconseillé d'utiliser Gitune Credentialconfiguration Managerqui plutôt que de stockerstocke le Personal Access Tokentoken directement dans un fichier texte.texte en clair.
À éviter :
~/.git-credentials
avec un contenu contenant directement leun token.
Il pratiqueest :
Le stockage via Git Credential Manager évite notammentdéconseillé de devoir inscriremettre le token directement dans lesl'URL URLsdu Gitdépôt.
À éviter :
https://username:token@serveur.example/repository.git
git clone, une URL Git, un script ou 9.10. Configurer l'identité Git
Le nom et l'adresse email Git serventsont àutilisés pour identifier l'auteur des commits. Ils nesont correspondentindépendants pas directement au mot de passe ou audu token GitLab.utilisé pour s'authentifier.
9.10.1 Vérifier la configuration actuelle
git config --global user.name
git config --global user.email
9.10.2 Configurer le nom
git config --global user.name "Prénom Nom"
9.10.3 Configurer l'adresse email
git config --global user.email "prenom.nom@laposte.fr"nom@example.com"
Utiliser deune préférence l'adresse email professionnelle reconnue par GitLab.la plateforme Git utilisée lorsque cela est nécessaire pour associer correctement les commits au compte.
10.11. Récupérer l'URL HTTPS d'undu repositorydépôt
DansOuvrir GitLable :dépôt dans GitHub ou GitLab.
ProjetRechercher |l'option +-->permettant Codede |cloner +-->le Clonedépôt |puis +-->sélectionner HTTPS
Une URL depeut repository ressembleressembler à :
https://gitlab.pop.sf.intra.laposte.fr/caas/mon-github.com/organisation/projet.git
ou :
https://gitlab.example.com/groupe/projet.git
L'URL exacte dépend de la plateforme et du serveur utilisé.
11.12. ClonerCréer un repositoryrépertoire local
Créer un répertoire destiné aux dépôts Git.
Exemple :
mkdir ~/Github
Se positionner dans le répertoire destiné à accueillir les repositories.
Exemple :
cd ~/OneDrive\ -\ LA\ POSTE\ GROUPE/Documents/LBP/Github
Le nom du répertoire est libre. Il peut par exemple être :
~/Github
~/Git
~/Repositories
~/Dev
13. Cloner leun repositorydépôt
Utiliser l'URL HTTPS fournie par GitHub ou GitLab.
Exemple GitHub :
git clone https://github.com/organisation/projet.git
Exemple GitLab :
git clone https://gitlab.pop.sf.intra.laposte.fr/caas/mon-example.com/groupe/projet.git
Git :
14. Authentification avec le Personaltoken
Lors de la commande.
Cela pourrait notamment exposer le token dans l'historique du shell. GitLab recommande de saisir le token lorsqu'il est demandé plutôt que de l'inclure directement dans l'URL. citeturn0search0
12. Première authentification Git
Lors du premier accès au repository,connexion, Git Credential Manager peut ouvrir une fenêtre d'authentification.
LorsqueSi Git demande directement les informationscredentials dans le terminal :
| Champ | Valeur |
|---|
XIOE341Nom d'utilisateur du compte
Password
Personal Access Token
Le Personal Access Token est utilisé comme mot de passe pour Git over HTTPS. citeturn0search0
13.15. Fonctionnement de Git Credential Manager
Lors du premier accès :
git pull / git clone
|
v
Git Credential Manager
|
v
Authentification
|
v
Stockage sécurisé des credentials
Lors des accès suivants :
git pull / git push
|
v
Git Credential Manager
|
v
Credential déjà enregistré
|
v
Serveur Git
Le token n'a donc normalement pas besoin d'être saisi à chaque opération.
16. Vérifier le repositorydépôt cloné
Entrer dans le repositoryrépertoire du dépôt :
cd mon-projet
AfficherVérifier lesl'URL remotesdu dépôt distant :
git remote -v
RésultatExemple attendu:
origin https://github.com/organisation/projet.git (fetch)
origin https://github.com/organisation/projet.git (push)
Ou avec GitLab :
origin https://gitlab.pop.sf.intra.laposte.fr/caas/mon-example.com/groupe/projet.git (fetch)
origin https://gitlab.pop.sf.intra.laposte.fr/caas/mon-example.com/groupe/projet.git (push)
14.17. Tester le pull
git pull
Si le repositorydépôt est déjà à jour :
Already up to date.
SiSinon, desGit récupère les modifications existentdisponibles sur GitLab,le Gitserveur.
18. récupère dansTester le repository local.
15. Workflow Git quotidien
15.1 Récupérer les dernières modifications
git pull15.2 Vérifier l'étatstatut du repository
dépôt
git status
15.3
Exemple de résultat :
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
19. Modifier un fichier
Modifier normalement les fichiers du projet avec Visual Studio Code.
Après modification, vérifier l'état :
git status
Les fichiers modifiés apparaissent alors dans la liste des changements.
20. Ajouter les modifications
Ajouter un fichier précis :
git add fichier.txt
Ajouter toutes les modifications :
git add .
15.4
Vérifier ensuite :
git status
21. Créer un commit
git commit -m "Description de la modification"
15.5
Utiliser un message de commit suffisamment explicite pour comprendre la modification effectuée.
22. Envoyer les modifications vers GitLab
git push
Git envoie alors les commits locaux vers le dépôt distant.
16.23. Workflow completGit quotidien
Le workflow classique est donc :
# 1. Récupérer les dernières modifications distantes
git pull
# 2. Vérifier lesl'état modificationsdu localesdépôt
git status
# 3.Modifier les fichiers
# Ajouter les fichiersmodifications
git add .
# 4. Créer le commit
git commit -m "Description de la modification"
# 5. Envoyer versles GitLabmodifications
git push
17.24. UtilisationUtiliser Git avec Visual Studio Code
Visual Studio Code utilise directement l'installation Git installéprésente sur le poste.
Il n'est donc pas nécessaire d'installer un deuxième Git uniquement pour VS Code.
17.24.1 Ouvrir leun repositorydépôt
Depuis Git Bash :
cd ~/OneDrive\ -\ LA\ POSTE\ GROUPE/Documents/LBP/Github/mon-projet
code .
Le repositorydépôt est alors ouvert dans Visual Studio Code.
17.24.2 Source Control
Dans VSVisual Studio Code, sélectionner l'icône Source Control dans la barre latérale gauche.
Les fichiers modifiés apparaissent dans la section Changes.
17.24.3 Stage / git add
Cliquer sur le bouton + à côté d'un fichier pourpermet effectuerde le placer dans la zone de staging.
Cela correspond à :
git add fichier
L'équivalent de git add . est l'action permettant de stage toutes les modifications.
17.24.4 Commit
Entrer le message de commit dans le champ prévu à cet effet puis sélectionner Commit.
ÉquivalentCela terminalcorrespond à :
git commit -m "Description de la modification"
17.24.5 Pull
LeUtiliser pulll'action peutPull êtredisponible effectuédans depuisles le menu Source Control ou le menucommandes Git de VSVisual Studio Code.
Équivalent terminal :
git pull
17.24.6 Push
Le push peut être effectué viaUtiliser Push ou Sync Changes, selon la version de VSVisual Studio Code.
Équivalent terminal :
git push
18.25. Résumé des correspondancesCorrespondance VS Code / Git
| Action dans VS Code | Commande Git |
|---|---|
git |
|
| Stage d'un fichier | git add fichier |
| Stage |
git add . |
| Commit | git commit -m "..." |
| Pull |
git pull
Push
git push
git status19.26. Plusieurs repositoriesdépôts
UnIl est possible d'utiliser le même Personalcompte Accesset Tokenle peutmême êtremécanisme utiliséd'authentification pour plusieurs repositoriesdépôts auxquelsaccessibles leavec comptece disposecompte, dans la limite des droitspermissions nécessaires.accordées au token.
Exemple d'organisation locale :
Github/
├── projet-a/
├── projet-b/
├── projet-c/
├└── projet-d/
└── projet-e/
Chaque repositorydépôt possède son propre répertoire .git.
IlLe n'est pas nécessaire de créer manuellement ces répertoiresrépertoire .git :est ils sont crééscréé automatiquement par Git lors d'un git clone ou .git init
20.27. Fichiers et éléments à ne pas créer manuellement
| Élément | Action |
|---|---|
.git |
Ne pas créer manuellement. |
.gitcredentials |
Ne pas créer |
21.28. Vérification complète de la configuration
Les commandes suivantes permettent de contrôlervérifier la configuration du poste :
# Version Git
git --version
# Version Git Credential Manager
git credential-manager --version
# Diagnostic GCMGit Credential Manager
git credential-manager diagnose
# Credential helper utilisé
git config --show-origin --get-all credential.helper
# Identité Git
git config --global user.name
git config --global user.email
# Remote du repositorydépôt
git remote -v
# Etat du repositorydépôt
git status
22. Exemple de configuration fonctionnelle
Une configuration fonctionnelle peut présenter les éléments suivants :
Git
version : 2.49.0.windows.1
Git Credential Manager
version : 2.6.1
credential.helper
manager
GitLab
https://gitlab.pop.sf.intra.laposte.fr
Authentification
SSO pour l'accès Web
PAT pour Git HTTPS
PAT
scope : write_repository
Git username
XIOE34123.29. Dépannage
23.29.1 Git demande le login et le token à chaque pullopération
Vérifier quele Gitcredential Credential Manager est configuréhelper :
git config --show-origin --get-all credential.helper
Le résultat doit notamment contenir :
managerVérifier également Git Credential Manager :
git credential-manager diagnose
Si le stockage des credentials est fonctionnel mais que l'authentification est systématiquement redemandée, vérifier l'URL du remote et les credentials enregistrés pour le serveur concerné.
23.29.2 Le token est refusé
Vérifier :
- que le token n'est pas expiré ;
- que le token n'
esta pas été révoqué ; - que le
scopetokenpossèdewrite_repositoryestlesprésentpermissions nécessaires ; - que le compte possède les droits nécessaires sur le
repositorydépôt ; - que
l'URL du remote pointe bien versleGitLabboninterneserveur Git est utilisé ; - que le token est utilisé comme mot de
passe et non le mot de passe SSO.passe.
23.29.3 Le pull fonctionne mais le push échoue
Ce cas indique généralement un problème de droits d'écriture.
Vérifier les permissions du token et les droits du compte sur le dépôt.
29.4 Vérifier l'URL du remotedépôt
git remote -v
L'Vérifier que l'URL doitcorrespond utiliserbien HTTPSau dépôt attendu et leutilise domaine GitLab interne :
https://gitlab.pop.sf.intra.laposte.fr/...23.4 Le repository fonctionne en lecture mais pas en push
Vérifier le scope du token.
write_repositoryLe scope read_repository permet la lecture, tandis que write_repository permet la lecture et l'écriture via Git over HTTP. citeturn0search3HTTPS.
24.30. Sécurité
- Ne jamais communiquer un Personal Access Token.
- Ne jamais
l'inscriremettre un token dans une URL Git.
25.31. Extension GitHub / GitLab pour VSVisual Studio Code
L'utilisationLes deopérations Git avec VS Codeclassiques ne nécessitenécessitent pas obligatoirement l'extension GitLabspécifique forà VSla Code.plateforme.
Pour les opérations classiques :
clone
pull
add
commit
push
Git + Git Credential Manager + VS Code suffisent.
L'extension GitLab peut cependant être utilisée pour bénéficier de fonctions supplémentaires liées à GitLab, comme les issues, merge requests et autres fonctionnalités d'intégration.
Dans ce cas, consulter la politique interne et la documentation GitLab concernant les scopes supplémentaires requis par l'extension avant de créer un token dédié.
26. Architecture finale recommandée
┌─────────────────────────────┐
│ GitLab La Poste │
│ │
│ gitlab.pop.sf.intra... │
└──────────────┬──────────────┘
│
HTTPS / Git
│
▼
┌─────────────────────────────┐
│ Git Credential Manager │
│ │
│ Authentification sécurisée │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Windows │
│ │
│ Credentials sécurisés │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Git / VS Code │
│ │
│ pull │
│ add │
│ commit │
│ push │
└─────────────────────────────┘27. Workflow recommandé au quotidien
Avant de commencer :
git pull
Pendant le travail :
modifier les fichiers
Avant le commit :
git status
Ajouter les modifications :
git add .
Créer le commit :
git commit -m "Description claire de la modification"
Envoyer vers GitLab :
git push28. Références
Résumé : pour ce poste, la configuration recommandée est Git HTTPS + Personal Access Token avec + Git Credential Manager + Visual Studio Code suffisent.write_repository
Les extensions GitHub ou GitLab peuvent être ajoutées pour bénéficier de fonctionnalités supplémentaires propres à la plateforme, comme les Pull Requests, Merge Requests, Issues ou Pipelines.
Les permissions nécessaires au token peuvent alors être différentes de celles nécessaires uniquement pour les opérations Git.
32. Architecture recommandée
GitHub / GitLab
^
|
HTTPS
|
|
Git Credential Manager
^
|
|
Git / Visual Studio Code
^
|
|
Repository local
33. Workflow recommandé
SERVEUR GIT
GitHub / GitLab
^
|
push
|
┌────┴────┐
│ COMMIT │
└────┬────┘
^
|
git add
^
|
MODIFICATIONS
^
|
git pull
|
v
SERVEUR GIT
34. Résumé
Pour travailler avec GitHub ou GitLab sous Windows, la configuration recommandée est :
Git
+
HTTPS
+
Personal Access Token
+
Git Credential Manager
+
Visual Studio Code
Une fois la configuration terminée, le workflow quotidien se limite généralement aux commandes suivantes :
git pull
git add .
Aucungit fichiercommit -m "Description de la modification"
git push
.gitcredentials,