Personnalisation

Configuration globale

git config --global user.email "mail@domain.tld"
git config --global user.name "Kevin Allioli"

Voir sa configuration

git config --list

Création et ajout de contenu

Initialiser un nouveau dépot:

git init

Cloner un dépot existant :

git clone ssh://user@domain.tld/repository.git

Ou

git clone https://domain.tld/user/repository.git

Créer un fichier « .gitignore » :

touch .gitignore
git add .gitignore
git commit -m "Add gitignore"

Créer un fichier « .gitignore » en utilisant un template « Windows »:

curl -s https://www.gitignore.io/api/windows > .gitignore
git add .gitignore
git commit -m "Add Windows gitignore template"

Créer un fichier « .gitignore » en utilisant un template « MacOS »:

curl -s https://www.gitignore.io/api/osx > .gitignore
git add .gitignore
git commit -m "Add macOS gitignore template"

Gérer les modifications

Afficher le statut de votre répertoire de travail :

git status

Afficher les modifications sur les fichiers suivis :

git diff

Ajouter tous les changements au prochain commit :

git add

Ajouter tous les changements de toute l’arborescence :

git add --all

Commiter tous les changements locaux des fichiers suivis :

git commit -a

Commiter les modifications en attente :

git commit -m 'Your message'

Modifier le commit précédent :

git commit --amend

Ou 

git commit --am

Gérer l'historique

Afficher tous les commits :

git log

Afficher tous les commits (uniquement l’id et le message de commit) :

git log --oneline

Afficher l’historique d’un utilisateur uniquement :

git log --author="username"

Afficher l’historique des modifications pour un fichier uniquement :

git log -p <file>

Affiche les changements (en détails) dans le fichier :

git blame <file>

Gérer les branches et les tags

Lister toutes les branches du dépôt :

git branch

Changer de branche :

git checkout <branch-name>

Créer une nouvelle branche en se basant sur le HEAD :

git branch <branch-name>

Créer une nouvelle branche de suivi, basée sur une branche distante :

git branch --track <new-branch> <remote-branch>

Supprimer une branche :

git branch -d <branch-name>

Marquer le commit courant avec un tag :

git tag <tag>

Merge request & rebase

Fusionner la branche courante avec la master ou main :

git checkout master/main
git merge <your-banch>

Mettre à jour votre branche avec le code de la master :

git checkout <your-branch>
git rebase master

Annuler un rebase en cours :

git rebase --abort

Continuer un rebase après avoir résolu des conflits :

git rebase --continue

Retour arrière et annulation d'actions

Annuler le dernier git add :

git reset HEAD

Annuler les modifications locales d'un fichier spécifique :

git checkout HEAD <file>

Annuler un commit (création d’un commit avec les modifications inverses) :

git revert <commit>

Placer le pointeur du HEAD sur un commit précédent. Conserve toutes les modifications effectuées depuis :

git reset <commit>

 Annuler toutes les modifications dans le répertoire de travail :

git reset --hard HEAD

Placer le pointeur du HEAD sur un commit précédent. Annule toutes les modifications effectuées depuis :

git reset --hard <commit>

Gérer et travailler avec un repository distant

Lister tous les dépôts distants configurés :

git remote -v

Montrer les informations d'un dépôt distant :

git remote show origin

Ajouter un nouveau dépôt distant :

git remote add <your-remote-repository> <url>

Synchroniser la branche « courante » avec la master/main. Et indiquer que le dépôt distant est par défaut l'origine.

git push -u origin master/main

Télécharger toutes les modifications d'un dépôt distant, sans les fusionner :

git fetch <remote>

Télécharger les modifications et les fusionner directement dans le HEAD :

git remote pull <remote> <url>

Fusionner les modifications de la branche master/main distante sur la branche courante :

git pull origin master/main

Récupérer toutes les modifications du HEAD dans le dépôt local :

git pull

Ou

git pull origin

Publier les modifications locales sur un dépôt distant :

git push

Ou

git push remote <remote-repository> <branch>

Publier les tags :

git push --tags