Xavier Lamorlette

git

Commandes

add

Ajoute un fichier dans l'index (pour le prochain commit).

blame

Pour un fichier, ligne pas ligne, montre la révision et l'auteur.

branch

Liste les branches.

checkout

cherry-pick

git cherry-pick [sha] : applique un commit sur la branche courante.
Cf SO : How to move certain commits to another branch in git?.

commit

Enregistre les changements.

diff

Montre les changements.

fetch

Récupère les commits du dépôt de référence.

init

Initialise un dépôt local (crée le répertoire .git).

log

Affiche l'historique.

merge

Fusionne les changements venant de la branche donnée en paramètre.

pull

Récupère les changements du dépôt de référence = git fetch && git merge.

push

Pousse les changements vers le dépôt de référence.

rebase

git rebase [branche] : recopie (et donc change leurs sha1) les commits de la branche courante par dessus ceux de la branche donnée en paramètre.

reflog

Affiche l'historique des actions.

remote

Gère le dépôt de référence.

reset

Réinitialise.

restore

Annule les changements sur un fichier = git checkout [fichier].

revert

Crée les changements qui annulent un commit donné.

rm

Supprime et oublie un fichier.

show

stash

Met de côté les changements locaux.

Pour les commandes prenant un paramètre d'index, s'il est omis, le plus récent changement est utilisé.

status

Donne le statut de l'index.

switch

Change de branche.

tag

Ajoute une étiquette.

Cas particuliers d'utilisation

Fusionner les derniers commits en un seul

git reset --soft [commit précédent ceux à fusionner]
git commit -m "message"
ou :
git rebase -i --autosquash [commit précédent ceux à fusionner]

Déplacer les derniers commits vers une nouvelle branche

git branch [nouvelle branche]
git reset --hard [dernier commit à garder dans la branche actuelle]
git switch [nouvelle branche]

Corriger le message d'un ancien commit

git rebase -i [commit précédent celui à corriger]
# écrire edit devant le commit à corriger
git commit --amend  # pour pouvoir corriger le message
git rebase --continue

Fusionner plusieurs anciens commits en un seul

git rebase -i [dernier commit à conserver]
# premier écran : basculer de “pick” à “squash” pour les commits à fusionner
# deuxième écran : message de commit

Annuler tous les changements locaux

Utile notamment après avoir reçu un git push.
> git checkout -f

Authentification permanente sur le dépôt

Atlassian: Permanently authenticating with Git repositories.

Garder l'authentification en cache une heure:

> git config --global credential.helper 'cache --timeout 3600'

Récupérer localement le head d'un collègue

> git remote add -f [bernard] https://[moi]@[serveur]/[projet].git

(> git remote update)

> git diff master remotes/[bernard]/master

> git fetch [bernard] master:[bernard]
> git checkout [bernard]

> git checkout master

> git remote rm [bernard]
> git branch -D [bernard]

Nettoyer les tags

Effacer les tags locaux absents sur le dépôt de référence
git tag -l | xargs git tag -d && git fetch -t
Effacer un tag sur le dépôt de référence
git push --delete origin […]

Erreurs

could not delete references: cannot lock ref [x]: Unable to create [x.lock]: File exists

Cette erreur peut notamment arriver lors d'un git pull --prune.

Configuration

~/.gitconfig :

[user]
        email = …
        name = …
[core]
        autocrlf = input
        safecrlf = false
[pull]
        rebase = false
[alias]
        lg = "log --all --decorate --oneline --graph"

Références

La dernière mise à jour de cette page date de décembre 2025.

Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.