Table des matières
Ouvrir table des matières
- 14 commandes à connaître quand on débute sur Git
- Initialiser un dépôt Git
- Cloner un dépôt git
- Récupérer les mises à jour du dépôt distant
- Changer de branche
- Tracker vos fichiers et vos dossiers
- Versionner ses changements
- Modifier le message de son dernier commit
- Garder une trace de son travail sans vouloir faire de commit
- Pousser vos changements sur le dépôt distant
- Fusionner une branche sur sa branche
- Récupérer les mises à jour d’une branche dont on hérite
- Mettre à jour une branche local par rapport à une branche distante
- Créer un tag pour identifier un commit d’une branche
- Voir l’historique des commits sur un dépôt local
- Epilogue
14 commandes à connaître quand on débute sur Git
Doit-on encore présenter Git ? Pour ceux qui débute très certainement que oui et je vous invite à consulter mon article sur versionner son code avec Git avant de poursuivre la lecture de celui-ci si vous ne connaissez pas.
Ce qui est déstabilisant au début avec Git c’est de ne pas bien maîtriser les commandes. Surtout au niveau de leur comportement par rapport à un cas de figure précis.
On a tout simplement peur de faire une bêtise, de perdre quelques heures de travail et de ne pas pouvoir revenir en arrière. J’ai connu et vécu ça au tout début à tel point que j’avais tellement peur que je sauvegardais une copie mon projet avant de réaliser certaines des commandes dans certains contextes.
Pourtant en apprenant leurs fonctionnements et à quoi elles servent, il y a peu de chance de faire une erreur et surtout gagner en sérénité.
Je vais expliquer 14 commandes Git, celle que j’utilise tous les jours ou le plus souvent et donc par définition les plus utiles. On commence tout de suite !
Source : http://www.commitstrip.com/fr/2016/05/24/training-the-newbie/ 🔗
Initialiser un dépôt Git
C’est la première commande à connaître même si vous ne l’utiliserez pas tous les jours, c’est initialiser un dépôt Git. On utilise généralement cette commande pour initialiser un répertoire local en un dépôt Git c’est-à-dire sur votre ordinateur.
Il n’a alors à cette étape aucun lien avec un dépôt distant. On peut initialiser un dépôt Git sur un répertoire vide comme remplie. Cela n’a pas d’importance.
Pour initialiser un dépôt, il suffit de taper la commande suivant dans votre terminal préféré :
git init
La commande va vous créer un dossier caché .git dans votre répertoire contenant divers fichiers dont vous n’avez pas besoin de savoir ce que c’est. Uniquement que cela sert à gérer et constituer votre dépôt Git.
Cloner un dépôt git
Cette commande est un classique. Le clonage d’un dépôt Git distant. le but est de cloner le dépôt distant en local sur sa machine.
Vous retrouverez alors avec un dossier contenant tous les fichiers et dossiers de la branche master du dépôt par défaut.
Mais ce n’est pas tout ! En plus de cela, vous aurez également le dossier .git dans votre répertoire. Vous pourrez ainsi naviguer entre les branches, mais surtout avoir accès à tout l’historique du dépôt :
git clone
Bien entendu, pour pouvoir cloner un dépôt distant vous devez y avoir accès c’est à dire une autorisation de le cloner. Si vous utilisez Github par exemple, les dépôts Open Source sont public et n’importe qui peut les cloner.
À l’inverse pour les dépôts privés il faut que ayez l’autorisation d’accéder au dépôt pour pouvoir le cloner.
Autre chose importante : le fait de se rendre sur Github et de cliquer sur le bouton télécharger sur un dépôt n’est pas un clone du dépôt. En effet, vous allez juste télécharger une version du dépôt. Voyez cela comme un one shoot !
Récupérer les mises à jour du dépôt distant
C’est une commande que j’utilise souvent étant donné que l’on travaille avec des dépôts distants et en équipe :
git fetch
Cette commande permet de récupérer les mises à jour du dépôt distant, c’est à dire les derniers commits poussés ainsi que les branches créées. Votre dépôt local va se mettre à niveau par rapport au distant.
Il ne va donc pas toucher à votre branche de travail sur laquelle vous serez peut être positionné (j’entends par branche de travail toute branche autre que master et develop).
A chaque fois que vous ouvrez un dépôt local attaché à un dépôt distant, vous devez effectuer cette commande pour vérifier que vous êtes à jour.
Changer de branche
Comme je vous l’ai dit plus haut, la commande de clone (mais également le init) vous positionne sur la branche master. Mais bien entendu on veut pouvoir se positionner sur d’autres branches. On utilise alors la commande :
git checkout
Il suffit alors de mettre le nom de la branche derrière le mot checkout pour basculer sur la branche en question. Si la branche existe sur le dépôt distant ou en local, vous basculerez automatiquement dessus.
Dans la cas où elle n’existe pas le checkout pourra vous permettre également de créer la branche en question.
A noter que la commande git branch permet de créer une nouvelle branche, mais sans basculer dessus. Je ne l’utilise jamais et vous non plus vous ne l’utiliserez pas.
En général lorsque l’on crée des branches c’est pour basculer directement dessus. Le checkout est donc un raccourci.
Tracker vos fichiers et vos dossiers
Lorsque l’on créé de nouveaux fichiers et dossiers ou tout simplement que l’on modifie des fichiers existants, il faut pouvoir le dire à git que l’on veut gérer le versionning sur ce qu’on a fait :
git add
Cette commande permet de dire à git que l’on veut tracker notre fichier pour l’inclure dans le versionning. Il suffit de mettre le nom du fichier derrière le mot-clé add que l’on veut tracker.
Une astuce permet cependant de dire que l’on veut tout tracker. Il suffit alors de rajouter un simple point pour tracker tous les fichiers :
git add .
Grâce à cette commande, on va pouvoir créer une nouvelle version avec la commande qui suivra juste après.
A noter : Git n’est pas capable de versionner des dossiers vides. Pourtant dans nos projets, il est utile d’en gérer certains vides pour le bon fonctionnement de votre application en gérant par exemple un dossier logs.
Pas le choix dans ce cas que de créer tout de même un fichier dans le dossier que l’on veut versionner, mais on prenant une convention particulière. En général, on créé un fichier vide nommé .gitkeep dans le dossier que l’on veut indexé à vide pour juste le notifier à git.
Versionner ses changements
La commande que j’utilise et que vous utiliserez le plus souvent par jour :
git commit
Un commit permet de figer à un instant T une version d’un ou plusieurs fichiers. Cela donc permet de suivre l’évolution des changements dans le temps et de naviguer entre chacune des versions.
Utilisez la commande tel quel ne fonctionnera pas. Il faut avoir au préalable effectué un git add et ajouter l’option -m à votre commande git commit pour décrire les changements que vous avez :
git commit -m "Je décris minutieusement le code que je viens de pondre"
Il est important de réaliser souvent des commits mais surtout de bien les structurer.
Modifier le message de son dernier commit
Vous avez réalisé un commit mais vous vous êtes loupé sur le message ? Pas de souci ça m’arrive très souvent. Il suffit d’utiliser cette commande :
git commit --amend -m "Mon nouveau message"
Garder une trace de son travail sans vouloir faire de commit
Il m’arrive fréquemment de tester de nouvelles choses pour moi sur un projet existant. Mais ce que je teste n’a pas rapport à le dépôt et en fait je ne veux pas créer de branche ni commit pour cela pour ne pas polluer le suivi.
Mais j’ai quand même envie de garder une trace localement de ce que j’ai fait. C’est que cette commande est intéressante :
git stash
Cette commande va créer un genre de commit qui sera stocké en local sans rapport avec une branche précise. Une fois fait, il va restaurer la branche sur laquelle vous aviez fait les modifications (que vous avez en stash) comme elle l’était avant vos changements.
Si jamais vous voulez réappliquer votre stash à un moment donné, il vous suffit d’utiliser la commande :
git stash apply
Pousser vos changements sur le dépôt distant
Là encore c’est une commande que vous utiliserez très souvent, car elle est un peu en lien avec les commits. En effet, effectuer des commits va créer une version d’un ou plusieurs fichiers à un instant T mais localement sur votre machine.
Pour en faire bénéficier tout le monde, il faut le mettre à disposition sur le dépôt distant. Et c’est cette commande qui vous permet d’effectuer cette opération :
git push
En fait cette commande va pousser les commits mais également la branche où se trouvent les commits (si la branche n’existe pas sur le dépôt distant, elle sera créée). Par exemple si vous voulez pousser des commits effectuer sur la branche develop, il faudra utiliser la commande suivante :
git push origin master
Le mot origin représentant le dépôt distant auquel votre dépôt local est connecté.
Fusionner une branche sur sa branche
En travaillant à plusieurs, il peut arriver où l’on veut récupérer le travail d’un autre collègue. Bien entendu vous travaillez chacun sur des branches différentes, mais vous avez besoin de ce qu’il a sur la sienne. C’est la que cette commande intervient et va vous aider :
git merge
Cette commande va vous permettre de récupérer les commits de la branche en question sur la votre. Ainsi si votre collègue a créé une branche fix_bug par exemple et que vous avez besoin de le récupérer sur votre branche alors vous aurez à utiliser la commande suivante :
git merge origin fix_bug
Il faut bien entendu que la branche soit sur le dépôt distant ou qu’elle existe sur votre dépôt local.
Récupérer les mises à jour d’une branche dont on hérite
C’est une commande à utiliser pour récupérer des commits effectués après votre création de branches et dans le cas où vous utilisez une méthode structurée d’utilisation de Git comme Git Flow.
Admettons que vous ayez créé une branche à un instant T à partir de la branche develop. Vous faîtes votre travail de votre côté mais entre-deux, develop voit de nouveau commit arriver.
Et là vous voulez les récupérer. Comme notre part de develop, on ne peut pas utiliser la commande merge. En fait la commande fonctionnerait mais au final vous risquez de dégrader la lisibilité de votre suivi Git sur votre branche develop.
La meilleure façon de procéder c’est de faire un rebase de la branche en question ce qui va permettre de rejouer les commits sur votre branche tout en intégrant les nouveaux sans altérer l’historique git de la branche d’origine.
git rebase
Mettre à jour une branche local par rapport à une branche distante
Une commande bien utile pour récupérer les mises à jour d’une branche distante sur une branche déjà existante en local :
git pull
Créer un tag pour identifier un commit d’une branche
Vous le savez en général, on aime bien créer et incrémenter les versions de nos applications. Quand on met une nouvelle version en production, on aimerait pouvoir figer cette version dans notre dépôt pour pouvoir les tracer voir revenir en arrière s’il y a un problème.
Cette commande vous permet de le faire :
git tag
Il suffit alors de renseigner ce que vous voulez derrière pour créer votre tag. Si vous voulez créer le tag v1.0 sur votre branche master actuelle. Vous taperez cette commande :
git tag v1.0
Voir l’historique des commits sur un dépôt local
Cette commande est vraiment très utile mais je l’utilise que dans un seul contexte. Lorsque je suis sur un serveur en SSH. Je vérifie que le dépôt sur le serveur est à jour et je contrôle les derniers commits récupérer pour vérification :
git log
Epilogue
Voilà ce sont les commandes que j’utilise le plus fréquemment suivant les contextes et que je pense que vous devez connaître si vous débutez.
Mais peut-être que vous vous en utilisez d’autres que je n’ai pas cités. Faites-le-moi savoir en commentaire et n’hésitez pas si vous avez des questions.