Git synthétique
Git, logiciel de gestion de versions décentralisé. Git gagne du terrain, depuis longtemps déjà. Les développeurs cherchent des réponses et des idées sur GitHub. Et pourtant, des commandes basiques restent méconnues.
Les plugins Git des IDE ne permettent pas tout. Cet article donne les commandes essentielles de Git, celles qui servent tous les jours ou presque. Pas de théorie, peu d’explications, pas de problèmes complexes. Pour ça, le site officiel est très bien fait : Git-scm
Ce billet, c’est un kit de survie si vous avez installé Git, si vous utilisez des dépôts standards avec quelques branches principales et quelques branches feature, mais si vous vous demandez trop souvent « Mais comment déjà que »
Alors à vos lignes de commandes ! Pour débuter ou pour un usage quotidien, tout est là :
Commandes de base
Télécharger un dépôt distant
git clone https://github.com/spring-projects/spring-framework
Changer de branche courante
git checkout myBranch
Récupérer les modifications faites sur le dépôt distant
git pull
Gérer les problèmes de caractères de fins de ligne (important pour le travail en équipe)
Windows
git config −−global core.autocrlf true
Linux ou Mac
git config −−global core.autocrlf input
Voir les fichiers modifiés
git status
Annuler la modification d’un fichier (les modifications locales sont perdues)
git checkout −− chemin/monFichier
Ajouter un fichier à committer (il fera partie du prochain commit)
git add chemin/monFichier
Annuler l’ajout
git reset −− chemin/monFichier
Ajouter tous les fichiers
git add .
Committer (committe en local tous les fichiers qu’on a ajoutés; ne fait rien à distance)
git commit -m ″message de commit″
Livrer (livre les commits sur le dépôt distant)
git push
Mettre des modifications de côté (restaure les fichiers, mais garde une trace de leur état modifié)
git stash
Annuler ce stash
git stash pop
Récupérer les modifications distantes en évitant tout problème de merge (c’est-à-dire une gestion des merges qui pourrait rendre moins lisible l’historique d’un fichier)
git pull −−rebase
Commandes pour l’usage quotidien
Obtenir les branches et les tags disponibles (dans un usage standard, origin est sans doute le nom du dépôt en local)
git fetch origin
Lister les branches disponibles
git branch −v −a
Récupérer une branche newBranch en local
git checkout -b newBranch origin/newBranch
Reporter un commit d’une branche dans une autre branche (le numéro identifie le commit, tous les commits en ont un)
git cherry-pick 5b6f78ac6a2e648b2332967b515261d297bfa13b
Créer une branche locale myBranch avec le contenu de refBranch
git checkout -b myBranch refBranch
Livrer une branche locale sur le distant
git push origin myBranch
Supprimer une branche locale
git branch -D myBranch
Supprimer une branche sur le dépôt distant
git push origin −−delete myBranch
Annuler un commit
git reset HEAD~1
Supprimer toutes les modifications, revenir à zéro (quand on est perdu après un merge ou autre)
git reset −−hard
git clean -di
Plus de commandes
Restaurer un fichier supprimé en local
git reset −− chemin/monFichier
Puis git checkout −− chemin/monFichier
Annuler un push vers le dépôt distant (le numéro identifie le commit)
git revert 5b6f78ac6a2e648b2332967b515261d297bfa13b
Voir les différences entre 2 branches
git diff origin/master..origin/featureBranch
Merger les commits d’une branche dans une autre (ne fait rien sur le distant, reporte les commits de featureBranch vers la branche courante)
git merge −−no-ff featureBranch
Merger les commits d’une branche sans committer (permet de voir les fichiers qui sont modifiés)
git merge −−no-commit −−no-ff featureBranch
Supprimer les branches locales qui n’existent plus sur le dépôt distant
git remote prune origin
Historique des commits
git log
Trouver les commits dont le message contient ″JIRA-5689″
git log −−grep ″JIRA-5689″
Créer un tag depuis une branche
git tag -a <tag_name> myBranch
Livrer un tag sur le dépôt distant
git push origin <tag_name>
Lister les tags
git tag -l
Récupérer le contenu d’un tag
git checkout tags/<tag_name>
Supprimer un tag en local
git tag −−delete <tag_name>
Supprimer un tag sur le dépôt distant
git push −−delete origin <tag_name>
Et voilà ! Dans la vie de tous les jours, ça suffira. Pour aller plus loin, OXiane propose une formation Git.