Antisèche Git, les commandes principales

Cette antisèche Git regroupe un lot de commandes très utilisées lorsque l’on commence avec Git ou que l’on utilise Git au quotidien. L’article listera les commandes détaillées dans des précédents articles sur le sujet :

Si vous pensez à d’autres commandes intéressantes, n’hésitez pas à utiliser les commentaires pour me les transmettre je complèterai l’antisèche.

Commandes de bases

En savoir plus sur une commande :

git help nom_commande
git nom_commande --help

Récupérer un dépôt via le système :

# mettre le contenu du dépôt dans le répertoire courant, ce dernier doit être vide.
git clone <URL_DEPOT> .
# ou mettre le dépôt dans un répertoire créé automatiquement au nom du projet
git clone <URL_DEPOT>

Mettre à jour le dépôt local :

git pull

Vérifier l’état de votre dépôt en local :

git status

Placer de nouveaux fichiers à l’index ou ré-indexer un fichier modifié :

git add FileName
# la commande add de git accepte les patterns, quelques exemples
git add .
git add *
git add src/*

Enlever un fichier de l’index :

git reset chemin/du/fichier

Supprimer un fichier dans l’index :

# pour un fichier
git rm filename
# pour un dossier
git rm -r folderName

Déplacer ou renommer un fichier dans l’index :

git mv ancien/chemin nouveau/chemin
git mv ancien_nom nouveau_nom

Annuler les modifications d’un fichier :

git checkout -- votreFichier
# cette commande prends les patterns
git checkout -- src/java/test/*

Commit des modifications :

git commit -m "Le message de votre commit"
# modifier le dernier commit
git commit --amend
# modifier uniquement le message du dernier commit
git commit --amend -m "Mon nouveau message"

Envoyer les commits sur le dépôt distant :

# sur le master courante
git push 
# sur une branche spécifique
git push origin <branchName>

Gérer les branches

Pour récupérer la liste des branches disponible en local :

git branch

Récupérer la liste des branches du dépôt distant :

git branch -r

Création d’une branche :

git branch monNomDeBrancheACreer

Créer une branche et la récupérer:

git checkout -b monNomDeBrancheACreer

Changer de branche :

git checkout brancheARecuperer

Supprimer une branche :

git branch -d branchASupprimer

Merge de deux branches :

# Aller sur le master
git checkout master
# merger la branche correctif pour intégrer les modifications dans le master
git merge correctif

Le fast forward :

# merger la branche correctif avec la traçabilité du merge
git merge --no-ff brancheAMerge

Rebase

# On créé la branche sur laquel nous allons dev
git checkout -b Branche_de_dev

# Après nos devs, on va cherche les modifications du dépôt
git checkout master
git pull master

# On intègre les modifications du dépôt à la branche avec le rebase
git checkout Branche_de_dev
git rebase master

Annuler des modifications

Annuler le dernier commit en gardant les modifications de ce commit :

git reset md5_commit_précédent

Annuler le dernier commit en supprimant les modifications de ce commit :

git reset --hard md5_commit_précédent

Git Ignore

Remplir le fichier .gitignore :

# ignorer le fichier toto.txt à la racine du projet
/toto.txt

# ignorer tous les fichiers .project de Eclipse du projet
.project

# ignorer tous les fichiers compilés java (.class) du projet
*.class

# ignorer tous les dossiers de configurations Eclipse ".settings" et leurs contenus
.settings/

# ignorer tous les fichiers dont l’arborescence termine par /docroot/WEB-INF/.gitignore
**/docroot/WEB-INF/.gitignore

Git Ignore global :

# Définition du fichier .gitignore_global à la racine de l'utilisateur courant comme fichier Git Ignore global
git config --global core.excludesfile ~/.gitignore_global

Bisect

Commencer une bisection :

# lance la bisection
git bisect start
# Explique à git que la révision courante contient le bug
git bisect bad

Renseigner un numéro de commit où le bug n’existait pas :

git bisect good md5_bon_commit

Après un round, si le bug est toujours présent :

git bisect bad

Après un round, si le bug n’est plus présent:

git bisect good

Terminer la bisection :

git bisect reset

Garder temporairement ces changements non commité

# Sauvegarde votre travail non commité sur une branche
git stash save
# Permet de voir ce qu'il y a dans le stash 
git stash show
# Récupérer vos modifications stockées dans le stash
git stash pop

Voir les différences avec un autre état :

Faire la différence entre le répertoire de travail et l’index :

git diff
# voir la différence pour le fichier monFichierSource.java
git diff src/main/java/monpackage/monFichierSource.java

Faire la différence entre l’index et le dépôt :

git diff --cached

Faire la différence entre l’état courant par rapport à la dernière version commitée :

git diff HEAD

Faire la différence entre la dernière version commitée et la révision précédente :

git diff HEAD^

Quelques exemples supplémentaires :

# permet d’ignorer les différences d’espaces et d’indentations
git diff -b
# permet d’ignorer les différences d’espaces et indentations au sein de la même ligne, mais indique les lignes vides ajoutées ou supprimées
git diff -w
# donne les statistiques de modification par dossier
git diff --stat  
# donne les statistiques de modification entre la dernière version commitée et 4 commits avant.
git diff --stat HEAD~4

Lister les modifications

Lister les commits qui ne sont pas encore push sur le dépôt central :

git log origin/master..HEAD

Lister les différences de fichiers depuis le dernier push sur le dépôt :

git diff origin/master..HEAD

Configurer et utiliser les outils de diff et de merge

Cas d’utilisation : Git pour interagir avec DiffMerge sur MacOS X

Configurations:

# difftool
git config --global diff.tool diffmerge 
git config --global difftool.diffmerge.cmd "/usr/bin/diffmerge \"\$LOCAL\" \"\$REMOTE\""

# mergetool
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.trustExitCode true
git config --global mergetool.diffmerge.cmd "/usr/bin/diffmerge --merge --result=\"\$MERGED\" \"\$LOCAL\" \"\$BASE\" \"\$REMOTE\""

Utilisations:

# Voir toutes les différences avec l'index, va proposer l'ouverture du diff tool pour chaque fichier modifié
git difftool
# Voir toutes les différences avec l'index du fichier monFichierSource.java
git difftool src/main/java/monpackage/monFichierSource.java
# Merger les conflits sur le fichier monFichierSourceEnConflit.java
git mergetool src/main/java/monpackage/monFichierSourceEnConflit.java

Créer des alias pour git

En ligne de commande :

# créer l'alias "git co" pour "git checkout"
git config --global alias.co checkout
# créer l'alias "git p" pour "git push"
git config --global alias.p push

Via le fichier .gitconfig :

[alias]
    p = push
    co = checkout

Alias commun :

[alias]
     p = push
     co = checkout
     b = branch
     st = status
     a = add
     ci = commit
     cim = commit -m

 


Partager l'article :

Facebooktwitterredditlinkedinmail
 

1 Commentaire

  1. Ping : LdS S27-2016 | Anayrat.info

Vous aussi participez, laissez un commentaire