← Retour aux fiches d'aide

Fiche d'aide

git commit échoue dans un DevContainer

Dans un DevContainer, les variables d'environnement d'identité Git ne sont pas toujours propagées depuis l'hôte. Un git commit peut alors échouer ou produire un commit sans auteur valide.

Symptômes

Le git commit se termine avec une erreur ou produit un commit dont l'auteur est vide, inconnu ou incorrect. Les messages typiques sont :

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"

Ou bien le commit réussit, mais git log affiche un auteur vide ou une adresse générique héritée de l'image Docker.

Cause

Git utilise quatre variables pour identifier l'auteur et le commiteur d'un commit :

  • GIT_AUTHOR_NAME et GIT_AUTHOR_EMAIL — la personne qui a écrit les modifications.
  • GIT_COMMITTER_NAME et GIT_COMMITTER_EMAIL — la personne qui enregistre le commit.

Dans un DevContainer, le terminal s'ouvre dans un conteneur Docker isolé. Les variables d'environnement de l'hôte (et parfois la configuration globale ~/.gitconfig de l'hôte) ne sont pas automatiquement disponibles dans ce contexte, selon la configuration du DevContainer.

Correction rapide — variables d'environnement

La solution immédiate consiste à exporter les variables dans le terminal du DevContainer avant de committer. Remplacer [Name] et [Email] par les valeurs réelles.

export GIT_AUTHOR_NAME="[Name]"
export GIT_AUTHOR_EMAIL="[Email]"
export GIT_COMMITTER_NAME="[Name]"
export GIT_COMMITTER_EMAIL="[Email]"

Ces variables sont actives pour toute la durée de la session du terminal. Elles disparaissent à la fermeture du terminal ou à la reconstruction du conteneur.

Correction durable — git config

Pour éviter de relancer les exports à chaque session, configurer l'identité Git directement dans le conteneur via git config. Cette configuration est persistée dans le fichier ~/.gitconfig à l'intérieur du conteneur (ou dans le volume monté selon la configuration du DevContainer).

git config --global user.name "[Name]"
git config --global user.email "[Email]"

Pour vérifier la configuration active dans le conteneur :

git config --global --list

Si le DevContainer est reconstruit, la configuration est perdue. Il est alors recommandé d'ajouter les commandes git config dans le script de post-création du DevContainer (postCreateCommand dans devcontainer.json), ou de monter le ~/.gitconfig de l'hôte en volume.