Skip to main content

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

utilise HTTPS et Élémentun Valeur GitLab https://gitlab.pop.sf.intra.laposte.fr Groupe principal caas Authentification GitLab Web SSO Authentification Git Personal Access Token (PAT) ou un Protocoletoken Gitéquivalent, HTTPSassocié à Gestionnaire d'identifiants Git Credential Manager (GCM) IDE Visual Studio Code .

2.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. citeturn0search0dépôt.

3.2. Pré-requisPrérequis

    Windows. Un compte GitLabGitHub actif. Un accès SSO La Poste permettant d'accéder àou GitLab. Les droits nécessaires sur lesle projetsdépôt GitLab à utiliser.concerné. Git installé sous Windows.installé. Git Credential Manager installé. Visual Studio Code installé.

    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.

    Plateforme Authentification Git HTTPS Token GitHub HTTPS Personal Access Token GitLab HTTPS Personal Access 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 citeturn0search0

    4.2 Créerclassique, le token

    scope

    Exemple de configuration :

    Champ Valeur recommandée Token name VS Code - Windows Expiration date Selon la politique de l'organisation Scope write_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, write_repositoryde donnedroits d'écriture.

    Bonne pratique : ne pas donner une permission globale de type API lorsque les droitsseules opérations nécessaires sont les opérations Git classiques.

    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. citeturn0search3

    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

    ATTENTION : leun Personal Access Tokentoken est une donnée secrète. Ne jamais le transmettrecommuniquer par email, chat,messagerie instantanée, ticket ou dépôt Git.

    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. citeturn0search0

    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.

    Bonne

    Il pratiqueest :

    également laisser Git Credential Manager gérer les credentials.

    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
    Important : ne jamais mettre un Personal Access Token directement dans une commande git clone, une URL Git, un script ou dansun desfichier scripts.de citeturn0search6configuration versionné.

    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.

    Projet

    Rechercher |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
    IMPORTANT

    Git :

    peut nealors jamaisdemander mettreles informations d'authentification.

    14. Authentification avec le Personaltoken

    Access Token directement dans l'URL

    Lors de la commande.

    première

    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. citeturn0search0

    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
    Username XIOE341Nom d'utilisateur du compte Password Personal Access Token

    Le Personal Access Token est utilisé comme mot de passe pour Git over HTTPS. citeturn0search0

    Attention : dans le champ PasswordPassword, doit contenirsaisir le PAT,token et non le mot de passe SSO.du compte.

    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.

    les

    18. récupère dansTester le repository local.

    15. Workflow Git quotidien

    15.1 Récupérer les dernières modifications

    git pull

    15.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
    PullAfficher les changements git pullstatus
    Stage d'un fichier git add fichier
    Stage allde tous les fichiers git add .
    Commit git commit -m "..."
    Pull
    git pull Push git push Afficher les modifications git status

    19.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. CrééGit automatiquementle danscrée chaque repository.automatiquement.
    .gitcredentials Ne pas créer manuellement.manuellement Utiliserlorsque Git Credential Manager.Manager est utilisé.
    Token dans une URL À éviter. Token dans un script À éviter. Token dans un dépôt Git Interdit.

    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
        XIOE341

    23.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 :

    manager

    Vé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 scopetoken write_repositorypossède estles présentpermissions nécessaires ;
    • que le compte possède les droits nécessaires sur le repositorydépôt ;
    • que l'URL du remote pointe bien vers le GitLabbon interneserveur 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_repository

    Le scope read_repository permet la lecture, tandis que write_repository permet la lecture et l'écriture via Git over HTTP. citeturn0search3HTTPS.

    24.30. Sécurité

    • Ne jamais communiquer un Personal Access Token.
    • Ne jamais l'inscriremettre un token dans une URL Git.
    Ne jamais mettre un token dans un script en clair. Ne jamais lecommitter mettreun directement dans une URL Git. Ne jamais le committertoken dans un repository.dépôt. Utiliser une date d'expiration adaptéelorsque àcela laest politique de sécurité.possible. Utiliser leles scopepermissions minimalminimales nécessaire.nécessaires. Révoquer immédiatement un token suspect ou compromis. Utiliser Git Credential Manager pour la gestion des credentials.

    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 push

    28. Références

      GitLab Documentation — Personal Access Tokens GitLab Documentation — Access Token Scopes GitLab Documentation — Clone a Git repository Git Credential Manager — GitLab support

      Résumé : pour ce poste, la configuration recommandée est Git HTTPS + Personal Access Token avec write_repository + Git Credential Manager + Visual Studio Code suffisent.

      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
      Configuration recommandée : utiliser HTTPS avec un token disposant des permissions minimales nécessaires, laisser Git Credential Manager gérer l'authentification et ne jamais stocker manuellement le token dans .gitcredentials, neune doitURL, êtreun crééscript manuellement.ou un dépôt Git.