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_NAMEetGIT_AUTHOR_EMAIL— la personne qui a écrit les modifications.GIT_COMMITTER_NAMEetGIT_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.