Xavier Lamorlette

git

Sommaire :

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

git reflog : affiche l'historique des actions

remote

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

reset

Réinitialise.

rm

Supprime et oublie un fichier.

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.

submodule

Gère les sous-modules.

tag

Ajoute une étiquette.

Cas particuliers d'utilisation

Annuler tous les changements locaux

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

Déplacer les derniers commits vers une nouvelle branche

> git branch [nom de la nouvelle branche]
> git reset --hard [sha du dernier commit à garder dans la branche actuelle]
> git checkout [nom de la nouvelle branche]
Source: SO: Move the most recent commit(s) to a new branch with Git.

Fusionner tous les commits d'amendements et de corrections en un seul

> git rebase -i --autosquash [dernier commit à conserver]

Regrouper les derniers commits en un seul

> git reset --soft [sha du commit précédent ceux à regrouper]
> git commit -m "commentaire"

Fusionner plusieurs commits en un seul

> git rebase -i HEAD~[nombre de commits à fusionner]
# premier écran : basculer de “pick” à “squash” pour les commits à fusionner
# deuxième écran : message de commit
cf http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html

Ré-ordonner les derniers commits

> git rebase -i HEAD~[nombre de commits à ré-ordonner]
# déplacer les lignes de commit dans l'ordre voulu

Corriger le texte d'un vieux commit

> git rebase -i HEAD~[position du commit à corriger]
# changer pick en reword

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 […]

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 septembre 2022.

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.