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.45.1 → 2.47.0 no changes
- 2.45.0 04/29/24
- 2.43.1 → 2.44.2 no changes
- 2.43.0 11/20/23
- 2.35.1 → 2.42.3 no changes
- 2.35.0 01/24/22
- 2.31.1 → 2.34.8 no changes
- 2.31.0 03/15/21
- 2.27.1 → 2.30.9 no changes
- 2.27.0 06/01/20
- 2.25.2 → 2.26.3 no changes
- 2.25.1 no changes
- 2.22.1 → 2.25.0 no changes
- 2.22.0 06/07/19
- 2.14.6 → 2.21.4 no changes
- 2.13.7 05/22/18
- 2.12.5 no changes
- 2.11.4 09/22/17
- 2.10.5 no changes
- 2.9.5 07/30/17
- 2.7.6 → 2.8.6 no changes
- 2.6.7 05/05/17
- 2.5.6 no changes
- 2.4.12 05/05/17
- 2.1.4 → 2.3.10 no changes
- 2.0.5 12/17/14
SYNOPSIS
git commit-tree <arbre> [(-p <parent>)…] git commit-tree [(-p <parent>)…] [-S[<id-clé>]] [(-m <message>)…] [(-F <fichier>)…] <arbre>
DESCRIPTION
Ce n’est généralement pas ce qu’un utilisateur final veut exécuter directement. Voir git-commit[1] à la place.
Crée un nouvel objet commit basé sur l’objet arbre fourni et émet l’identifiant du nouvel objet commit sur stdout. Le message de journal est lu depuis l’entrée standard, à moins que les options -m
ou -F
soient données.
Les options -m
et -F
peuvent être données plus d’une fois, dans n’importe quel ordre. Le message du journal de livraison sera composé dans l’ordre dans lequel les options sont données.
Un objet commit peut avoir un nombre quelconque de parents. Avec exactement un parent, c’est un commit ordinaire. Avoir plus d’un parent fait du commit une fusion entre plusieurs lignes d’historique. Les commits initiaux (racine) n’ont pas de parents.
Alors qu’un arbre représente un état particulier d’un répertoire de travail, un commit représente cet état dans le "temps", et explique comment y arriver.
Normalement, un commit devrait identifier un nouvel état "HEAD", et bien que Git ne se soucie pas de l’endroit où vous enregistrez la note sur cet état, en pratique nous avons tendance à simplement écrire le résultat dans le fichier qui est pointé par .git/HEAD
, de sorte que nous pouvons toujours voir quel était le dernier état validé.
OPTIONS
- <arbre>
-
Un objet d’arbre existant.
- -p <parent>
-
Chaque
-p
indique l’id d’un objet commit parent. - -m <message>
-
Un paragraphe dans le message du journal de validation. Ceci peut être donné plus d’une fois et chaque <message> devient son propre paragraphe.
- -F <fichier>
-
Lire le message de validation depuis le fichier indiqué. Utilisez - pour lire le message depuis l’entrée standard. Ceci peut être indiqué plusieurs fois et le contenu de chaque fichier devient un paragraphe différent.
- -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 tout--gpg-sign
précédent sur la ligne de commande.
Information de validation
Un commit encapsule :
-
tous les identifiants des objets parents
-
nom de l’auteur, courriel et date
-
le nom et l’adresse électronique du validateur et la date du commit.
Un commentaire de validation est lu à partir de stdin. Si une entrée de changelog n’est pas fournie via la redirection « < », git commit-tree attendra simplement qu’une entrée soit entrée et terminée par ^D.
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
.
Discussion
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.
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 .