19 commandes git indispensables pour les développeurs
Vous voulez apprendre les commandes de base de git ? Vous connaissez git push git pull et git clone et voulez apprendre plus du commandes ? Vous perdez du temps car vous ne maitrisez pas git ?
Alors ce top des commandes git les plus utiles est fait pour vous !
Git est un logicel de controle de version (version control) qui permet d’avoir un historique les modifications apportees a son code ou a celui des autres. Ce projet open-source gratuit est un standard de l’industrie que tout developpeur se doit de connaitre sur le bout des doigts !
Apres avoir lu cet aricle vous serez capables de :
- manipuler des branches
- pousser du code avec git sur github ou un autre serveur git (push)
- telecharger du code de github (clone)
- ecrire proprement vos messages commit
- maitriser votre flow localement
Commencons sans plus tarder a explorer les commandes git les plus utiles !
git config
Pour configurer votre username
et l’adresse email à utiliser pour vos commits. Le flag -global
rend ces changements persistants sur votre machine plutot qu’uniquement pour le projet.
git config username
git config –global user.name <votre_nom_d'utilisateur>
git config email
git config –global user.email <votre_adresse_email>
Si vous travaillez depuis plusieures machines et que vos commit semblent afficher differents emails ou pseudo, c’est parceque vous n’avez pas la meme configuration !
git init
Pour initialiser un nouveau repo, utilisez la commande :
git init <le_nom_de_votre_repo_git>
git init bare
Un repo initalisé avec le flag bare
n’aura pas de working tree
. Ce qui veut dire qu’on ne pourra pas simplement git add
des fichiers pour ensuite les commit
et les push
. D’ailleurs si vous git init --bare
un dossier et puis tapez ls -la
vous verrez que git n’a pas genere de .git mais plutot ce qui se trouve habituellement dans un dossier cache .git, directement a la racine de votre dossier.
git init --bare <nom_de_depot>
Mais alors a quoi sert git init — bare ?
On initialise un repo avec bare
quand on veut par exemple, trigger des git hooks quand une certaine action se produit. On peut ainsi mettre en production des projets a chaque nouveau commit.
git init --bare
est aussi utile quand on travaille en equipe et qu’on veut un remote repository commun, pour ne pas poluer le repo et n’avoir que les commit, on met a jour le repo sur github ou sur un autre serveur git uniquement avec des git push
, sans modifier le code directement (comme il n’y a pas de working tree).
Par convention, quand on initialise un repo avec git init --bare
, on ajoute .git
en fin de nom de dossier. Ainsi, monprojet
devient monprojet.git
git clone
Pour cloner un dépôt à partir d’une URL existante (github, gitlab, serveur git prive, …).
git clone <url_du_depot_git>
git add
Pour ajouter un fichier en staging
. On peut add
un ou plusieurs fichiers et certains flags sont comme le flag --patch
sont particulierement utiles.
git add <nom_du_ou_des_fichier(s)>
git add *
git add --patch *
Le flag —patch lance un programme interactif qui vous permet d’ajouter en staging ou pas certains bouts de code. Vous aurez plusieurs options comme split pour diviser encore plus le code en morceaux.
--patch
est parfait si vous avec fait plusieurs modifications dans un fichier mais que vous ne voulez commit qu’une modification dans ce meme fichier.
git commit
Pour enregistrer vos changements dans l’historic Git.
git commit proprement
Idealement, vous avez configure VIM, Emacs ou un autre editeur de texte pour qu’il soit votre editeur de texte Git.
Apres, pour ecrire votre message de commit proprement et eviter les symboles qui cassent vos commit, tapez :
git commit
Votre editeur de texte se lance et vous pouvez formater votre message proprement avec les conventions que vous utilisez.
git commit avec un message directement
Pour aller plus vite, vous pouvez aussi directement mettre votre message en ligne de commande avec le flag -m
.
git commit -m <votre_message_de_commit>
git commit les changements
Pour commit les fichiers que vous avez ajoutés avec la commande git add
et de commit
également les fichiers que vous avez modifiés depuis.
git commit -a
git diff
Pour afficher les différences de fichiers qui ne sont pas encore staged
.
git diff
git diff staged
Pour afficher les différences entre les fichiers dans staging et la version présente.
git diff –staged
git diff deux branches
Voir les différences entre les deux branches mentionnées.
git diff <branche_une> <branche_deux>
git reset
Pour retirer le fichier de staging
, mais préserve son contenu.
git reset <fichier>
Parfait pour retirer un ficher
staged
sans faire expres et garder des commit propres : un changement = un commit.
Pour annuler tous les commit après le commit spécifié et préserve les modifications localement.
git reset commit
git reset <hash_du_commit>
git reset hard
Pour supprimer tout l’historique et revient au commit spécifié.
git reset –hard <hash_du_commit>
git status
Pour lister tous les fichiers qui doivent être commit et leur etats : untracked
et to be committed
.
git status
git rm
Pour supprimer le fichier de votre répertoire de travail et stage
la suppression.
git rm <fichier>
git log
Pour lister l’historique des versions de la branche courante.
git log
Pour lister l’historique des versions d’un fichier, y compris le renommage des fichiers.
git log –follow <nom_du_fichier>
git show
Pour afficher les métadonnées et les modifications de contenu du commit spécifié.
git show <hash_du_commit>
git tag
Pour donner un tags au commit spécifié.
git tag <hash_du_commit>
git branch
Pour lister toutes les branches locales dans le dépôt actuel.
git branch
Pour créer une nouvelle branche.
git branch <branche>
Pour supprimer une certaine branche.
git branch -d <branche>
git checkout
Pour passer d’une branche à l’autre.
git checkout <branche>
Pour créer une nouvelle branche et switcher directement à celle-ci.
git checkout -b <branche>
Si vous avez bien suivi, c’est l’equivalent de
git branch <nouvelle_branche>
suivi de la commandegit checkout <nouvelle_branche>
git merge
Pour fusionner l’historique de la branche spécifiée dans la branche actuelle.
git merge <branche>
git remote
Pour lier votre repo local a votre repo remote.
git remote add <nom_du_remote (origin ou autre)> <lien_du_serveur>
git push
Pour push
les changements sur master
.
git push <nom_du_remote> master
Pour push les commits à votre dépôt distant sur de la branche specifiee.
git push <remote> <branche>
Pour pousser toutes les branches vers votre repo remote.
git push –all <remote>
git pull
Pour chercher et merger les modifications d’une branche du serveur git et l’applique a la branche sur laquelle vous vous trouvez.
git pull <branche>
git stash
Pour stocker temporairement tous les fichiers tracked modifiés.
git stash
ou
git stash save
Utile quand vous voulez mettre votre travail de cote pour revenir a la branche avant vos modifications temporairement. Par exemple, quand le commercial vient demander pourquoi ca ne marche pas, vous pouvez stash vos modifications, lui montrer que la branche fonctionne bien et puis revenir sur vos modifications quand vous avez la paix 😇
Pour restaurer les derniers fichiers stashed.
git stash pop
Pour lister tous vos stashes.
git stash list
Pour éliminer le dernier ensemble de modifications stashed.
git stash drop
Aller plus loin avec Git
Git est un outil très complet et vous pourrez continuer a l’apprendre au long de votre carriere. Il existe aussi des interfaces graphiques (GUI), github a d’ailleurs son propre client pour gerer vos commit visuellement.
Je vous recommanderais cependant de vous forcer a utiliser git en ligne de commande au debut pour bien apprendre les commandes par coeur !
Je m'appelle Thomas. Depuis ma sortie de la première promo de l'École 42, j'ai développé une app qui a été téléchargée plus de 400.000 fois. J'ai lancé près de 10 idées de startups et de nombreux autres business. Sur ce blogue, je vous apprends comment utiliser le Code pour devenir libre.