Aller au contenu

git commit

Définition

La commande git commit enregistre toutes les modifications actuellement préparées du projet. Les commits sont créés pour capturer l'état actuel d'un projet. Les instantanés validés sont considérés comme des versions sûres d'un projet car Git demande une confirmation avant de les modifier. Avant d'exécuter la commande git commit, la commande git add est utilisée pour préparer les modifications qui seront ensuite stockées dans un commit.

Fonctionnement

Les instantanés Git sont validés dans le dépôt local. Git vous permet d'accumuler des commits localement, plutôt que de pousser les modifications immédiatement vers un dépôt central. Cela offre de nombreux avantages, tels que diviser une fonctionnalité en plusieurs commits, regrouper des commits liés et nettoyer l'historique local avant de pousser vers le dépôt central. Cela donne également aux développeurs la possibilité de travailler de manière isolée.

Options courantes

git commit -aValide un instantané de toutes les modifications du répertoire de travail. Seules les modifications des fichiers suivis sont incluses.
git commit -m "commit message"Crée un commit avec le message de commit fourni. Par défaut, git commit ouvre l'éditeur de texte configuré localement pour saisir un message de commit.
git commit -am "commit message"Combine les options -a et -m pour préparer tous les fichiers suivis modifiés et créer un commit avec un message en ligne.
git commit --amendModifie le dernier commit. Les modifications préparées sont ajoutées au commit précédent. Cette commande ouvre l'éditeur de texte configuré par le système et modifie le message de commit précédemment spécifié.

Enregistrer les modifications avec un commit

Dans l'exemple suivant, nous avons le fichier w3docs.txt avec un contenu modifié sur la branche actuelle. Pour valider l'instantané préparé du fichier, vous devez d'abord préparer le fichier avec la commande git add.

Commande git add

bash
git add w3docs.txt

L'exécution de git add déplacera le fichier w3docs.txt vers la zone de préparation de Git. Utilisez la commande git status pour voir la sortie.

git status

bash
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: w3docs.txt

La sortie indique que w3docs.txt sera enregistré avec le prochain commit. Le commit est créé en exécutant :

Git commit

bash
git commit

L'exécution de git commit ouvre un éditeur de texte (nous pouvons le définir via git config) demandant un message de journal de commit et une liste de ce qui est en cours de validation :

git commit dans l'éditeur

bash
# Enter the commit message of your changes. Lines that start
# with '#' will be ignored, an empty message breaks off the commit.
# On branch master
# Changes needed to be committed:
# (use "git reset HEAD ..." to unstage)
#
#modified: w3docs.txt

Le format de commit conventionnel de Git résume le changement sur la première ligne en moins de 50 caractères, suivi d'une ligne vide et d'une explication détaillée. Par exemple :

Message de commit git

bash
Change the message displayed by w3docs.txt

- Update the sayHello() function to get the username
- Change the sayGoodbye() function to a more welcoming message

La première ligne du message de commit est la ligne d'objet, le reste en est le corps.

Comment mettre à jour (modifier) un commit

L'exemple suivant ouvre l'éditeur de texte configuré, pré-rempli avec le message de commit déjà saisi. Cela signifie que vous modifiez le dernier commit au lieu d'en créer un nouveau.

git add et git commit

bash
git add w3docs.txt
git commit --amend

Git commit vs svn commit

SVN est un modèle d'application centralisé, tandis que Git est un modèle d'application distribué. svn commit pousse les modifications du client local vers un dépôt centralisé. Dans Git, les instantanés sont validés dans le dépôt local. Les commits Git peuvent être poussés vers n'importe quel dépôt distant.

Des instantanés, pas des différences

Git est basé sur des instantanés, tandis que SVN suit les différences dans les fichiers. Un svn commit enregistre un diff qui est appliqué au fichier original dans le dépôt. Git enregistre l'état complet du projet à chaque commit. Lors de l'enregistrement de l'état du projet, Git prend un instantané des fichiers actuels et stocke une référence à cet instantané. Si un fichier n'a pas changé, Git ne le stocke pas à nouveau, ce qui optimise l'espace de stockage.

git file diff

Snapshots

Pratique

Quelles sont les caractéristiques et les options de la commande 'git commit' ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.