Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.46.2 → 2.47.0 no changes
- 2.46.1 09/13/24
- 2.45.1 → 2.46.0 no changes
- 2.45.0 04/29/24
- 2.43.2 → 2.44.2 no changes
- 2.43.1 02/09/24
- 2.43.0 11/20/23
- 2.38.1 → 2.42.3 no changes
- 2.38.0 10/02/22
- 2.35.1 → 2.37.7 no changes
- 2.35.0 01/24/22
- 2.34.1 → 2.34.8 no changes
- 2.34.0 11/15/21
- 2.33.1 → 2.33.8 no changes
- 2.33.0 08/16/21
- 2.32.1 → 2.32.7 no changes
- 2.32.0 06/06/21
- 2.31.1 → 2.31.8 no changes
- 2.31.0 03/15/21
- 2.30.1 → 2.30.9 no changes
- 2.30.0 12/27/20
- 2.27.1 → 2.29.3 no changes
- 2.27.0 06/01/20
- 2.25.2 → 2.26.3 no changes
- 2.25.1 02/17/20
- 2.25.0 01/13/20
- 2.24.1 → 2.24.4 no changes
- 2.24.0 11/04/19
- 2.23.1 → 2.23.4 no changes
- 2.23.0 08/16/19
- 2.21.1 → 2.22.5 no changes
- 2.21.0 02/24/19
- 2.17.0 → 2.20.5 no changes
- 2.16.6 12/06/19
- 2.14.6 → 2.15.4 no changes
- 2.13.7 05/22/18
- 2.12.5 09/22/17
- 2.11.4 09/22/17
- 2.10.5 09/22/17
- 2.9.5 07/30/17
- 2.8.6 no changes
- 2.7.6 07/30/17
- 2.6.7 05/05/17
- 2.5.6 no changes
- 2.4.12 05/05/17
- 2.3.10 no changes
- 2.2.3 09/04/15
- 2.1.4 no changes
- 2.0.5 12/17/14
SYNOPSIS
git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend] [--dry-run] [(-c | -C | --squash) <commit>] | --fixup [(amend|reword):]<commit>] [-F <fichier> | -m <msg>] [--reset-author] [--allow-empty] [--allow-empty-message] [--no-verify] [-e] [--author=<auteur>] [--date=<date>] [--cleanup=<mode>] [--[no-]status] [-i | -o] [--pathspec-from-file=<fichier> [--pathspec-file-nul]] [(--trailer <token>[(=|:)<valeur>])…] [-S[<idclĂ©>]] [--] [<spec-de-chemin>…]
DESCRIPTION
CrĂ©e un nouveau commit contenant le contenu actuel de l’index et avec le message de validation dĂ©crivant la modification. Le nouveau commit est un fils direct de HEAD, habituellement au sommet de la branche actuelle et la branche est mise Ă jour pour pointer dessus (Ă moins qu’aucune branche ne soit associĂ©e avec l’arbre de travail actuel, auquel cas HEAD est « dĂ©tachĂ©e » comme dĂ©crit dans git-checkout[1]).
Le contenu Ă valider peut ĂȘtre spĂ©cifiĂ© de diffĂ©rentes maniĂšres :
-
en utilisant git-add[1] pour « ajouter » de maniĂšre incrĂ©mentale des modifications Ă l’index avant d’utiliser la commande commit (Note : les fichiers doivent ĂȘtre « ajoutĂ©s » pour faire partie du commit, mĂȘme s’ils ont Ă©tĂ© modifiĂ©s);
-
en utilisant git-rm[1] pour supprimer des fichiers de l’arbre de travail et de l’index, encore une fois avant d’utiliser la commande commit;
-
en listant les fichiers comme arguments de la commande commit (sans les options --interactive ou --patch), auquel cas la validation ignorera les modifications indexĂ©es et enregistrera plutĂŽt le contenu actuel des fichiers listĂ©s (qui doivent ĂȘtre dĂ©jĂ connus de Git);
-
en utilisant l’option -a avec la commande commit pour « ajouter » automatiquement les modifications de tous les fichiers connus (c’est-Ă -dire les fichiers dĂ©jĂ listĂ©s dans l’index) et supprimer (rm) automatiquement les fichiers de l’index qui ont Ă©tĂ© supprimĂ©s dans l’arbre de travail, puis d’effectuer la validationâŻ;
-
en utilisant les options --interactive ou --patch avec la commande commit pour choisir quels fichiers ou sections de fichier doivent ĂȘtre inclus dans le commit en plus de l’index, avant finalisation de l’opĂ©ration. RĂ©fĂ©rez-vous Ă la section « Mode interactif » de git-add[1] pour la description de ces modes.
L’option --dry-run
peut ĂȘtre utilisĂ©e pour obtenir un rĂ©sumĂ© de ce qui sera inclus par une des commandes ci-dessus pour la prochaine validation en fournissant le mĂȘme jeu de paramĂštres (options et chemins).
Si vous validez et trouvez une erreur immédiatement aprÚs, vous pouvez annuler la validation avec git reset.
OPTIONS
- -a
- --all
-
Indiquer Ă la commande d’indexer automatiquement les fichiers qui ont Ă©tĂ© modifiĂ©s ou supprimĂ©s, mais les nouveaux fichiers dont vous n’avez pas signalĂ© la prĂ©sence Ă Git ne sont pas affectĂ©s.
- -p
- --patch
-
Utiliser la sélection interactive de correctif pour choisir quelles modifications valider. Référez-vous à git-add[1] pour plus de détails.
- -C <commit>
- --reuse-message=<commit>
-
Prendre un objet commit existant et rĂ©utiliser son message de validation et son information d’auteur (y compris l’horodatage) pour la crĂ©ation du commit.
- -c <commit>
- --reedit-message=<commit>
-
Comme -C, mais avec
-c
, l’Ă©diteur est appelĂ© pour permettre Ă l’utilisateur de modifier le message de validation. - --fixup=[(amend|reword):]<commit>
-
Créer un nouveau commit qui « répare »
<commit>
quand il est appliqué avecgit rebase --autosquash`
. Un simple--fixup=<commit>
crée un commit "fixup!" qui change le contenu de<commit>
mais laisse son message de validation inchangé.--fixup=amend:<commit>
est similaire mais crée un commit "amend!" qui remplace aussi le message de validation de<commit>
par le message de validation du commit "amend!".--fixup=reword:<commit>
crée un commit "amend!" qui remplace le message de validation de<commit>
par son propre message de log mais ne fait aucun changement au contenu de<commit>
.Le commit créé par le simple
--fixup=<commit>
a un sujet composé de "fixup !" suivi de la ligne de sujet de <commit>, et est reconnu spécialement pargit rebase --autosquash
. L’option-m
peut ĂȘtre utilisĂ©e pour complĂ©ter le message du journal du commit crĂ©Ă©, mais le commentaire supplĂ©mentaire sera jetĂ© une fois que le commit "fixup !" sera Ă©crasĂ© dans<commit>
pargit rebase --autosquash
.Le commit créé par
--fixup=amend:<commit>
est similaire mais son sujet est Ă la place prĂ©fixĂ© par "amend !". Le message de validation de <commit> est copiĂ© dans le message de validation du commit "amend !" et ouvert dans un Ă©diteur afin qu’il puisse ĂȘtre affinĂ©. Lorsquegit rebase --autosquash
Ă©crase le commit "amend !" dans<commit>
, le message de validation de<commit>
est remplacĂ© par le message de validation raffinĂ© du commit "amend !". C’est une erreur si le message du journal du commit "amend !" est vide, Ă moins que--allow-empty-message
soit spécifié.--fixup=reword:<commit>
est un raccourci pour--fixup=amend:<commit> --only
. Il crĂ©e un commit "amend !" qui touche seulement au message de validation (en ignorant les changements mis en place dans l’index). Lorsqu’il est Ă©crasĂ© pargit rebase --autosquash
, il remplace le message du validation de<commit>
sans faire d’autres changements.Ni les commits "fixup!" ni les commits "amend!" ne changent la paternitĂ© de
<commit>
quand ils sont appliqués pargit rebase --autosquash
. Voir git-rebase[1] pour plus de détails. - --squash=<commit>
-
Construire un message de validation pour une utilisation avec
rebase --autosquash
. La ligne de titre du message de validation est tirĂ©e du commit spĂ©cifiĂ© prĂ©fixĂ©e par « squash! ». Peut ĂȘtre utilisĂ©e avec d’autres options de commit (-m
/-c
/-C
/-F
). Référez-vous à git-rebase[1] pour plus de détails. - --reset-author
-
Utilisé avec les options -C/-c/--amend ou lors de validation aprÚs un picorage conflictuel, déclarer que la paternité du commit résultant appartient à présent au validateur avec un horodatage mis à jour.
- --short
-
Lors d’un essai sans effet, fournir la sortie en format court. Voir git-status[1] pour plus de dĂ©tails. implique
--dry-run
. - --branch
-
Montrer la branche et l’information de suivi, y compris en format court.
- --porcelain
-
Lors d’un essai sans effet, fournir la sortie en format prĂȘt pour la porcelaine. Voir git-status[1] pour plus de dĂ©tails. implique
--dry-run
. - --long
-
Avec --dry-run, donner la sortie en format long. Implique
--dry-run
. - -z
- --null
-
Avec les sorties de statut
short
ouporcelain
, afficher le nom du fichier textuellement et terminer par NUL, au lieu de LF. Si aucun format n’est spĂ©cifiĂ©, implique le format de sortie--porcelain
. Sans l’option-z
, les noms de fichier contenant des caractÚres « inhabituels » sont indiqués selon la variable de configurationcore.quotePath
(voir git-config[1]). - -F <fichier>
- --file=<fichier>
-
Prendre le message de validation depuis le fichier indiquĂ©. Utilisez - pour lire le message depuis l’entrĂ©e standard.
- --author=<auteur>
-
Surcharger l’auteur du commit. SpĂ©cifier un auteur explicite avec le format standard
Prénom Nom <auteur@exemple.com>
. Sinon <auteur> est considĂ©rĂ© comme un patron utilisĂ© pour chercher un commit existant par cet auteur (c-Ă -d rev-list --all -i --author=<auteur>) ; l’auteur du commit est alors copiĂ© depuis le premier commit trouvĂ©. - --date=<date>
-
Surcharger la date d’auteur utilisĂ©e dans le commit.
- -m <msg>
- --message=<msg>
-
Utiliser le <msg> fourni comme message de validation. Si plusieurs options
-m
sont fournies, leurs valeurs sont concatĂ©nĂ©es comme paragraphes sĂ©parĂ©s.L’option
-m
est incompatible avec-c
,-C
ou-F
. - -t <fichier>
- --template=<fichier>
-
Ă l’Ă©dition du message de validation, dĂ©marrer l’Ă©diteur avec le contenu du fichier indiquĂ©. La variable de configuration
commit.template
est souvent utilisĂ©e pour fournir implicitement cette option Ă la commande. Ce mĂ©canisme peut ĂȘtre utilisĂ© par les projets qui souhaitent guider les collaborateurs avec une aide sur ce qu’il faut Ă©crire dans le message et dans quel ordre. Si l’utilisateur sort de l’Ă©diteur sans changer le message, la validation est annulĂ©e. Ceci n’a aucun effet quand un message est fourni par un autre moyen, par exemple par les options-m
ou-F
. - -s
- --signoff
- --no-signoff
-
Ajouter une ligne finale
Signed-off-by
du validateur Ă la fin du message de validation. La signification de signoff dĂ©pend du projet sur lequel vous validez. Par exemple, cela peut certifier que le validateur a le droit de soumettre son travail sous la licence du projet ou accepte une certaine reprĂ©sentation du contributeur, tel qu’un Certificat d’Origine de DĂ©veloppeur. (Voir https://developercertificate.org/ pour celui utilisĂ© par les projet du noyau Linux ou de Git). Consultez la documentation ou la direction du projet auquel vous contribuez pour comprendre comment les signatures sont utilisĂ©es dans ce projet.L’option --no-signoff peut ĂȘtre utilisĂ©e pour contrecarrer une option --signoff prĂ©cĂ©dente sur la ligne de commande.
- --trailer <jeton>[(=| :)<valeur>]
-
SpĂ©cifier une paire (<jeton>, <valeur>) qui doit ĂȘtre appliquĂ©e comme une ligne terminale (par exemple,
git commit --trailer "Signed-off-by:C O Mitter \ <committer@example.com>" --trailer "Helped-by:C O Mitter \ <committer@example.com>"
ajoutera la ligne terminale "Signed-off-by" et la ligne terminale "Helped-by" au message de validation). Les variables de configurationtrailer.*
(git-interpret-trailers[1]) peuvent ĂȘtre utilisĂ©es pour dĂ©finir si une ligne terminale dupliquĂ©e est omise, ou oĂč chaque ligne terminale apparaĂźtrait dans la sĂ©rie de lignes terminales, et d’autres dĂ©tails. - -n
- --[no-]verify
-
Par dĂ©faut, les crochets pre-commit et commit-msg sont exĂ©cutĂ©s. Lorsque l’une des options
--no-verify
ou-n
est donnée, ils sont contournés. Voir aussi githooks[5]. - --allow-empty
-
En gĂ©nĂ©ral, enregistrer un commit qui pointe sur la mĂȘme version que son unique parent est une erreur et la commande vous empĂȘche de crĂ©er un tel commit. Cette option court-circuite cette sĂ©curitĂ© et sert principalement dans les scripts d’interface avec d’autres SCM (Software Configuration Management, gestion de configuration logicielle).
- --allow-empty-message
-
Comme --allow-empty, cette commande est principalement utilisĂ©e par les scripts d’interface avec d’autres SCM (Software Configuration Management, gestion de configuration logicielle). Elle vous permet de crĂ©er un commit avec un message vide sans utiliser de commande de plomberie telle que git-commit-tree[1].
- --cleanup=<mode>
-
Cette option dĂ©termine comment le message de validation fourni doit ĂȘtre nettoyĂ© avant la validation. Le <mode> peut ĂȘtre
strip
,whitespace
,verbatim
,scissors
oudefault
.- strip
-
Supprimer les lignes vides de début et de fin, les espaces, les commentaires et réduire les lignes vides consécutives à une seule.
- whitespace
-
Identique Ă
strip
sauf que les #commentaires ne sont pas supprimés. - verbatim
-
Laisser le message inchangé.
- scissors
-
Identique Ă
whitespace
, Ă l’exception que tout Ă partir de la ligne ci-dessous (incluse) sera Ă©liminĂ© si le message est Ă©ditĂ©. "#
" peut ĂȘtre personnalisĂ© grĂące Ă core.commentChar.# ------------------------ >8 ------------------------
- default
-
Identique Ă
strip
si le messages est édité. Sinonwhitespace
.
La valeur par dĂ©faut peut ĂȘtre modifiĂ©e par la variable de configuration
commit.cleanup
(voir git-config[1]). - -e
- --edit
-
Le message tirĂ© d’un fichier avec
-F
, ou de la ligne de commande avec-m
, ou depuis un objet commit avec-C
est gĂ©nĂ©ralement utilisĂ© sans modification. Cette option permet d’Ă©diter au passage le message tirĂ© de ces sources. - --no-edit
-
Utiliser le message de validation sĂ©lectionnĂ© sans lancer d’Ă©diteur. Par exemple,
git commit --amend --no-edit
corrige un commit sans changer son message de validation. - --amend
-
Remplacer le sommet de la branche actuelle en crĂ©ant un nouveau commit. L’arbre enregistrĂ© est prĂ©parĂ© comme d’habitude (incluant l’effet des options
-i
et-o
et les spĂ©cificateurs explicites de chemin) et le message du commit originel est utilisĂ© comme point de dĂ©part au lieu d’un message vide, quand aucun autre message n’est spĂ©cifiĂ© Ă la ligne de commande via des options telles que-m
,-F
,-c
, etc. Le nouveau commit a les mĂȘmes parents et auteur que l’originel (l’option--reset-author
peut modifier l’auteur).C’est un Ă©quivalent grossier de :
$ git reset --soft HEAD^ $ ... faire autre chose pour obtenir l'arbre correct ... $ git commit -c ORIG_HEAD
mais peut ĂȘtre utilisĂ© pour corriger un commit de fusion.
Vous devriez comprendre les implications d’une rĂ©Ă©criture de l’historique si vous modifiez un commit qui a dĂ©jĂ Ă©tĂ© publiĂ©. (Voir la section « RATTRAPPER UN REBASAGE AMONT » dans git-rebase[1].)
- --no-post-rewrite
-
Court-circuiter le crochet post-rewrite.
- -i
- --include
-
Avant de crĂ©er un commit Ă partir du contenu indexĂ© jusqu’Ă prĂ©sent, indexer aussi les contenus des chemins fournis sur la ligne de commande. Cela n’est habituellement pas ce que vous souhaitez, Ă part si vous terminez une fusion conflictuelle.
- -o
- --only
-
RĂ©aliser une validation en prenant le contenu de l’arbre de travail des chemins spĂ©cifiĂ©s sur la ligne de commande, en ignorant tout contenu d’autres chemins dĂ©jĂ indexĂ©. C’est le mode d’opĂ©ration par dĂ©faut de git commit si des chemins sont fournis sur la ligne de commande, auquel cas l’option peut ĂȘtre omise. Si cette option est spĂ©cifiĂ©e en mĂȘme temps que
--amend
, alors il n’est pas nĂ©cessaire de spĂ©cifier des chemins, ce qui peut ĂȘtre utile pour corriger le dernier commit sans valider les modifications qui ont dĂ©jĂ Ă©tĂ© indexĂ©es. Si utilisĂ© avec--allow-empty
, les chemins ne sont pas nécessaires non plus et un commit vide sera créé. - --pathspec-from-file=<fichier>
-
Le spécificateur de chemin est passé dans
<fichier>
au lieu des arguments de la ligne de commande. Si<fichier>
vaut-
alors l’entrĂ©e standard est utilisĂ©e. Les Ă©lĂ©ments du spĂ©cificateur de chemin sont sĂ©parĂ©s par LF ou CR/LF. Les Ă©lĂ©ments du spĂ©cificateur de chemin peuvent ĂȘtre citĂ©s comme expliquĂ© pour la variable de configurationcore.quotePath
(voir git-config[1]). Voir aussi l’option--pathspec-file-nul
et l’option globale--literal-pathspecs
. - --pathspec-file-nul
-
Uniquement significatif avec
--pathspec-from-file
. Les éléments du spécificateur de chemin sont séparés par le caractÚre NUL et tous les autres caractÚres sont utilisés littéralement (y compris les retours à la ligne et les guillemets). - -u[<mode>]
- --untracked-files[=<mode>]
-
Montrer les fichiers non-suivis.
Le paramĂštre de mode est optionnel (par dĂ©faut, all) et sert Ă spĂ©cifier la gestion des fichiers non suivis ; quand -u n’est pas utilisĂ©, le mode par dĂ©faut est normal, c’est-Ă -dire montrer les fichiers et les dossiers non-suivis.
Les options possibles sont :
-
no - Ne montrer aucun fichier non-suivi
-
normal - Montrer les fichiers non-suivis et les dossiers dont le contenu est non-suivi
-
all - Montrer aussi les fichiers dans les dossiers dont le contenu n’est pas suivi.
Toutes les expressions pour la valeur booléenne
true
sont interprétées commenormal
etfalse
commeno
. La valeur par défaut est contenue dans la variable de configuration status.showUntrackedFiles documentée dans git-config[1]. -
- -v
- --verbose
-
Afficher en bas du modĂšle de message de validation un diff unifiĂ© entre le commit HEAD et ce qui serait validĂ© pour aider l’utilisateur Ă dĂ©crire le commit en lui rappelant les modifications qui seront validĂ©es. Veuillez noter que cette sortie de diff n’est pas prĂ©fixĂ©e par des #. Elle ne fera pas pour autant partie du message de validation. RĂ©fĂ©rez-vous Ă la variable de configuration
commit.verbose
dans git-config[1].Si spĂ©cifiĂ© deux fois, afficher en plus le diff unifiĂ© entre ce qui serait validĂ© et les fichiers de l’arbre de travail, c’est-Ă -dire les modifications non-indexĂ©es des fichiers suivis.
- -q
- --quiet
-
Supprimer le message de résumé de commit.
- --dry-run
-
Ne pas créer de commit, mais montrer une liste des chemins qui seront validés, une de ceux contenant des modifications locales et qui ne seront pas validés, et une de ceux non-suivis.
- --status
-
Inclure la sortie de git-status[1] dans le modĂšle de message de validation lors de l’utilisation d’un Ă©diteur pour prĂ©parer le message de validation. ActivĂ© par dĂ©faut, mais peut surcharger la variable de configuration commit.status.
- --no-status
-
Ne pas inclure la sortie de git-status[1] dans le modĂšle de message de validation lors de l’utilisation d’un Ă©diteur pour prĂ©parer le message de validation par dĂ©faut.
- -S[<idclé>]
- --gpg-sign[=<idclé>]
- --no-gpg-sign
-
Signer les commits avec GPG. L’argument
idclé
est optionnel avec par dĂ©faut l’identitĂ© du validateur ; si spĂ©cifiĂ©e, elle doit ĂȘtre collĂ©e Ă l’option sans aucun espace.--no-gpg-sign
est utile pour annuler l’effet de la variable de configurationcommit.gpgSign
ainsi que tout--gpg-sign
précédent. - --
-
Ne pas interpréter les arguments qui suivent comme options.
- <spĂ©cificateur de chemin>…
-
Quand un spécifcateur de chemins est fourni sur la ligne de commande, valider le contenu des fichiers correspondants, sans enregistrer les modifications déjà indexées. Le contenu de ces fichiers est aussi indexé pour le commit suivant par-dessus ce qui a été indexé auparavant.
Pour plus de dĂ©tail, voir l’entrĂ©e spĂ©cificateur de chemin dans gitglossary[7].
EXEMPLES
Lors de l’enregistrement de votre propre travail, le contenu des fichiers modifiĂ©s dans votre arbre de travail est temporairement stockĂ© au moyen de git add
dans une zone de stockage intermĂ©diaire appelĂ©e « l’index ». Un fichier peut n’ĂȘtre ramenĂ© Ă son contenu correspondant au dernier commit seulement dans l’index mais pas dans l’arbre de travail grĂące Ă git restore --staged <fichier>
, ce qui inverse effectivement le git add et empĂȘche les modifications de ce fichier de participer Ă la prochaine validation. AprĂšs avoir construit l’Ă©tat Ă valider de maniĂšre incrĂ©mentale avec ces commandes, git commit
(sans aucun nom de chemin en paramĂštre) sert Ă enregistrer ce qui a Ă©tĂ© prĂ©parĂ© jusqu’ici. C’est la forme la plus simple de la commande. Par exempleâŻ:
$ edit hello.c $ git rm goodbye.c $ git add hello.c $ git commit
Au lieu d’indexer les fichiers aprĂšs chaque modification individuelle, vous pouvez ordonner Ă git commit
d’inspecter les modifications des fichiers dont le contenu est dĂ©jĂ suivi dans votre arbre de travail et de rĂ©aliser les git add
et git rm
correspondant pour vous. De fait, l’exemple suivant fait la mĂȘme chose que l’exemple prĂ©cĂ©dent si aucune autre modification n’a eu lieu dans votre arbre de travailâŻ:
$ edit hello.c $ rm goodbye.c $ git commit -a
La commande git commit -a
inspecte votre arbre de travail, remarque que vous avez modifié hello.c et supprimé goodbye.c, puis réalise les git add
et git rm
nécessaires pour vous.
AprĂšs l’indexation des modifications de nombreux fichiers, vous pouvez modifier l’ordre dans lequel les modifications sont enregistrĂ©es, en fournissant des chemins Ă git commit
. Quand ces chemins sont fournis, la commande crĂ©e un commit qui n’enregistre que les modifications des chemins indiquĂ©sâŻ:
$ edit hello.c hello.h $ git add hello.c hello.h $ edit Makefile $ git commit Makefile
Ceci crée un commit qui enregistre les modifications de Makefile
. Les modifications indexées pour hello.c
et hello.h
ne sont pas incluses dans le commit rĂ©sultant. Cependant, leurs modifications ne sont pas perdues — elles sont toujours indexĂ©es et simplement suspendues. AprĂšs la sĂ©quence ci-dessus, si vous faitesâŻ:
$ git commit
cette seconde validation enregistrerait les modifications de hello.c
et hello.h
comme attendu.
AprĂšs l’arrĂȘt d’une fusion (commencĂ©e avec git merge
ou git pull
) pour cause de conflit, les chemins fusionnĂ©s proprement sont dĂ©jĂ indexĂ©s pour vous, et les chemins en conflit sont laissĂ©s dans un Ă©tat non-fusionnĂ©. Vous auriez Ă chercher d’abord les chemins en conflit avec git status
et aprĂšs les avoir corrigĂ©s manuellement dans votre copie de travail, vous les indexeriez comme d’habitude avec git add
âŻ:
$ git status | grep unmerged unmerged: hello.c $ edit hello.c $ git add hello.c
AprÚs avoir résolu les conflits et indexé le résultat, git ls-files -u
arrĂȘterait de mentionner les chemins en conflit. Quand vous avez terminĂ©, lancez git commit
pour finaliser la validation de la fusionâŻ:
$ git commit
Comme dans le cas de la validation de vos propres modifications, vous pouvez utiliser l’option -a
pour vous épargner de la frappe. Une différence est que pendant la résolution de fusion, vous ne pouvez pas utiliser git commit
avec des noms de chemin pour changer l’ordre des modifications Ă valider, parce que la fusion doit ĂȘtre enregistrĂ©e comme un commit unique. En fait, la commande refuse d’ĂȘtre lancĂ©e avec des noms de chemin (voir par contre l’option -i
).
INFORMATION DE VALIDATION
Les informations sur les auteurs et les validateurs sont tirĂ©es des variables d’environnement suivantes, si elles sont dĂ©finies :
GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE
(nota bene "<", ">" et "\n"s sont supprimés)
Les noms de l’auteur et du validateur sont par convention une forme de nom personnel (c’est-Ă -dire le nom par lequel les autres humains vous dĂ©signent), bien que Git n’impose ou n’exige aucune forme particuliĂšre. N’importe quel unicode peut ĂȘtre utilisĂ©, sous rĂ©serve des contraintes Ă©numĂ©rĂ©es ci-dessus. Ce nom n’a aucun effet sur l’authentification ; pour cela, voir la variable credential.username
dans git-config[1].
Dans le cas oĂč (certaines de) ces variables dâenvironnement ne sont pas dĂ©finies, les informations sont prises Ă partir des Ă©lĂ©ments de configuration user.name
et user.email
, ou, si elle nâest pas prĂ©sente, la variable dâenvironnement EMAIL, ou, si ce nâest pas rĂ©glĂ©, le nom dâutilisateur du systĂšme et le nom dâhĂŽte utilisĂ© pour le courrier sortant (pris depuis /etc/mailname
et ou par dĂ©faut le nom dâhĂŽte entiĂšrement qualifiĂ© lorsque ce fichier nâexiste pas).
Les options author.name
et committer.name
et leurs options de courrier Ă©lectronique correspondantes remplacent les options user.name
et user.email
si elles sont dĂ©finies et sont elles-mĂȘmes remplacĂ©es par les variables d’environnement.
L’utilisation typique consiste Ă dĂ©finir uniquement les variables user.name
et user.email
; les autres options sont fournies pour les cas d’utilisation plus complexes.
FORMATS DE DATE
Les variables d’environnement GIT_AUTHOR_DATE
et GIT_COMMITTER_DATE
supportent les formats de date suivants :
- Format interne de Git
-
Il est de la forme
<horodatage-unix> <décalage-de-fuseau-horaire>
, oĂč<horodatage-unix>
est un nombre de secondes depuis l’Ă©poque UNIX.<dĂ©calage-de-fuseau-horaire>
est un dĂ©calage positif ou nĂ©gative par rapport Ă UTC. Par exemple, CET (qui est en avance d’une heure sur UTC) est+0100
. - RFC 2822
-
Le standard de format de date tel que décrit par la RFC 2822, par exemple
Thu, 07 Apr 2005 22:13:13 +0200
. - ISO 8601
-
Les heures et les dates sont spécifiées par le standard ISO 8601, par exemple
2005-04-07T22:13:13
. L’analyseur accepte aussi un espace au lieu du caractĂšreT
. Les parties fractionnelles d’une seconde seront ignorĂ©es, par exemple,2005-04-07T22:13:13.019
sera considéré comme étant2005-04-07T22:13:13
.NoteDe plus, la partie date est acceptée dans les formats suivants : AAAA.MM.JJ
,MM/JJ/AAAA
etJJ.MM.AAAA
.
En plus de reconnaĂźtre tous les formats de date ci-dessus, l’option --date
essaiera Ă©galement de donner un sens Ă d’autres formats de date plus humainement comprĂ©hensibles, tels que les dates relatives comme "yesterday" ou "last Friday at noon".
DISCUSSION
Bien que ça ne soit pas requis, c’est une bonne pratique de commencer les messages de validation avec une seule ligne courte (pas plus de 50 caractĂšres) pour rĂ©sumer la modification, suivie d’une ligne blanche, suivie d’un description plus prĂ©cise. Le texte jusqu’Ă la ligne vide du message de validation est traitĂ© comme le titre du commit, et ce titre est utilisĂ© extensivement dans Git. Par exemple, git-format-patch[1] transforme un commit en courriel et utilise le titre comme sujet et le reste du texte comme corps.
Git est dans une certaine mesure agnostique concernant l’encodage des caractĂšres.
-
Le contenu des objets blob est une sĂ©quence d’octets non interprĂ©tĂ©s. Il n’y a pas de conversion d’encodage au niveau de base.
-
Les noms de chemins sont encodĂ©s en forme C de normalisation UTF-8. Ceci s’applique aux objets arbre, au fichier d’index, au noms de rĂ©fĂ©rences ainsi qu’aux noms de chemin en argument de ligne de commande, aux variables d’environnement et aux fichiers de configuration (
.git/config
(voir git-config[1]), gitignore[5], gitattributes[5] and gitmodules[5]).Remarquez que Git traite les noms de chemins comme des sĂ©quences d’octets non-nuls au niveau de base, il n’y a pas de conversion d’encodage des noms de fichiers (sauf sur Mac et Windows). De ce fait, l’utilisation de noms de chemins non-ASCII fonctionnera pratiquement, mĂȘme sur les plateformes et systĂšmes de fichier utilisant d’anciens encodages d’ASCII Ă©tendu.
-
Les messages du journal des validations sont typiquement encodĂ©s en UTF-8, mais les autres encodages d’ASCII Ă©tendu sont aussi pris en charge. Ceci inclut ISO-8859-x, CP125x et de nombreux autres, mais pas UTF-16/32, EBCDIC ni les encodages multi-octets CJK (GBK, Shift-JIS, Big5, EUC-x, CP9xx etc.).
Bien que l’usage de UTF-8 dans les messages de validation soit encouragĂ©, le cĆur de Git et la porcelaine sont conçus pour ne pas forcer l’usage d’UTF-8 dans les projets. Si tous les participants d’un projet donnĂ© trouvent plus simple d’utiliser des encodages anciens, Git ne l’interdit pas. Cependant, il y a quelques dĂ©tails Ă garder en tĂȘte.
-
git commit
etgit commit-tree
affichent un avertissement si le message de validation fourni ne semble pas ĂȘtre une chaĂźne de caractĂšres UTF-8 valide, Ă moins que vous n’indiquiez explicitement que votre projet utilise un encodage ancien. La maniĂšre de l’indiquer est d’avoiri18n.commitEncoding
dans.git/config
, comme ceciâŻ:[i18n] commitEncoding = ISO-8859-1
Les objets commit créés avec le réglage ci-dessus enregistrent la valeur de
i18n.commitEncoding
dans leur entĂȘte d’encodageencoding
. Ceci permet d’aider les personnes qui les liront plus tard. L’absence de cet entĂȘte implique que les message de validation est encodĂ© en UTF-8. -
Sauf indication contraire, git log, git show, git blame et consort lisent l’entĂȘte
encoding
d’un objet commit et essaient de rĂ©-encoder le message de validation en UTF-8. Vous pouvez spĂ©cifier l’encodage de sortie que vous souhaitez aveci18n.logOutputEncoding
dans le fichier.git/config
, comme ceciâŻ:[i18n] logOutputEncoding = ISO-8859-1
Si vous n’avez pas changĂ© cette variable de configuration, c’est la valeur de
i18n.commitEncoding
qui est utilisée.
Remarquez qu’il a Ă©tĂ© dĂ©libĂ©rĂ©ment choisi de ne pas rĂ©-encoder le message de validation quand le commit est crĂ©Ă© pour forcer l’UTF-8 au niveau de l’objet commit parce que rĂ©-encoder en UTF-8 n’est pas nĂ©cessairement une opĂ©ration rĂ©versible.
ENVIRONNEMENT ET VARIABLES DE CONFIGURATION
L’Ă©diteur utilisĂ© pour Ă©diter le message de validation sera choisi dans l’ordre de recherche depuis la variable d’environnement GIT_EDITOR
, puis depuis la variable de configuration core.editor
, puis depuis la variable d’environnement VISUAL
ou la variable d’environnement EDITOR
. Voir git-var[1] pour plus de détails.
Warning
|
Missing See original version for this content. |
Warning
|
Missing See original version for this content. |
CROCHETS
Cette commande peut lancer les crochets commit-msg
, prepare-commit-msg
, pre-commit
, post-commit
et post-rewrite
. Voir githooks[5] pour de plus amples informations.
FICHIERS
-
$GIT_DIR/COMMIT_EDITMSG
-
Ce fichier contient le message de validation en cours. Si
git commit
sort Ă cause d’une erreur avant de crĂ©er un commit, tout message de validation fourni par l’utilisateur (par exemple dans une session d’Ă©diteur) sera disponible dans ce fichier, mais sera Ă©crasĂ© par l’invocation suivante degit commit
.
GIT
Fait partie de la suite git[1]
TRADUCTION
Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .