Skip to content

Les commandes essentielles

Nous utiliserons principalement des commandes dites "de porcelaine" : elles sont haut-niveau et formées d’un seul mot (log, add, commit...), contrairement aux commandes de "plomberie", plus bas-niveaux et formées de plusieurs mots (cat-file, write-tree...).

git init

Cette commande initialise un nouveau dépôt Git en créant un dossier .git là où la commande est exécutée et ce dossier contiendra touts les fichiers nécessaires au dépôt. Autrement, il contiendra toutes les données de la base de données de contenus de ce dépôt.

git log

La commande git log permet de consulter les commits d’une ou plusieurs branches (en général une seule, et par défaut la branche courante) dans l’ordre antéchronologique. Par défaut cette commande affiche ces données pour chaque commit :

  • hash (SHA-1) du commit
  • éventuellement les refs associés à ce commit
  • auteur du commit (nom et email)
  • date du commit
  • message entier du commit

Il existe une (très) grande quantité d’options à cette commande, en voici quelques unes :

  • --oneline permet d’afficher chaque commit sur une seule ligne (hash abrégé, éventuellement les refs associés, et première ligne du message de commit)
  • --graph permet d’afficher le graph des commits
  • -<n> n étant un nombre entier, permet d’afficher les n commits les plus récents (ex : git log -2 affiche les 2 derniers commits)
  • -S <query> permet d’afficher les commits qui contiennent dans les lignes ajoutés, supprimées ou modifiées la chaîne de caractères <query> (ex : git log -S 'Promise' listera tous les commits où une ligne contenant le mot 'Promise' aura été ajoutée, supprimée ou modifiée)
  • --grep <regex> permet d’afficher tous les commits qui auront dans leur message de commit le modèle passé (ex : git log --grep '^f.{2,3}:')

git add

La commande git add permet d’ajouter un dossier entier, et/ou un ou des fichiers spécifiques ou des parties spécifiques de certains dossiers et/ou fichiers dans l’index.

L’index est appelé en français « zone tampon » (parfois « zone de préparation ») et correspond à l’état temporaire du prochain commit : seulement ce qui est dans l’index sera ajouté dans le commit par la commande git commit (cf. plus loin).

Pour ajouter un ou plusieurs fichiers spécifiques, il faut simplement ajouter le chemin relatif complet vers ce ou ces fichier(s) :

shell
git add index.html package.json

On peut ajouter aussi tout un dossier, dans ce cas, tous les fichiers et les sous-dossiers de ce dossier seront ajoutés à l’index :

shell
git add src

L’option la plus simple (et fortement déconseillée, car très peu spécifique) d’ajouter ses modifications dans l’index est d’utiliser l’option -A de git add : toutes les modifications présentes dans la copie de travail seront ajoutées dans l’index.

Il est fortement conseillé de n’ajouter que des parties spécifiques, grâce à l’utilisation de l’option -p (pour patch, en anglais, qu’on peut traduire par fragment de modification). Attention : cette option permet seulement d’ajouter les modifications de fichiers déjà suivis, elle n’ajoutera pas les nouveaux fichiers dans l’index.

shell
git add -p

Cette commande lancera un script qui s’arrêtera à chaque fragment pour demander s’il faut ajouter le fragment dans l’index (y puis Enter) ou non (n puis Enter). Pour voir les autres options, taper ? et Enter. Une qui peut être intéressante est s qui permet de diviser encore les fragments si on ne veut que quelques modifications parmi celles proposées.

git commit

La commande git commit permet de valider un ensemble de modifications : tout ce qui est dans l’index sera présent dans le commit. Un commit prend forcément un message de commit non-vide.

shell
git commit -m "chore: 🎉 Init project"

On peut modifier facilement le dernier commit : il faut faire les modifications voulues, les ajouter à l’index, et lancer la commande suivante :

shell
git commit --amend

Cela remplacera le commit avec un nouveau (le hash sera forcément différent), qui contiendra les modifications précédentes plus celles qui viennent d’être ajoutées.