Git ?

Mais oui vous savez, git, ces quelques commandes que vous utilisez depuis quelques semaines maintenant. Si vous n’êtes pas un de mes étudiants, cet article est une très bref introduction à git, comment cela fonctionne et quelques fonctionnalités, le but étant de se concentrer sur l’essentiel.

C’est quoi git ?

Personne ne fait du code parfait d’une seule traite…
Sauf moi, mais il n’y qu’un seul moi.

  • Linus Torvalds1

Vous ne connaissez peut être pas Linus Torvalds, mais si c’est le cas, c’est super !
Il s’agit d’un informaticien Finlandais qui a créé le Noyau Linux. Mais on est pas là aujourd’hui pour parler de lui, vous voulez en apprendre plus à propos de git, donc très bien, allons y.

Alors qu’est-ce que git ? Qu’est-ce qui se cache derrière git ? git est un système de contrôle de version2 pour suivre les changements dans les fichiers informatiques et coordonner le travail sur ces fichiers entre plusieurs personnes. Avec git, vous pouvez voir sur quoi les autres travaillent, vous pouvez passer en revue leur code sans chercher partout, vous pouvez voir vos modifications précédentes, vous pouvez revenir à votre code précédent et bien plus encore.

Il y a beaucoup de commandes et je vais vous en montrer quelques-unes aujourd’hui.

GiT GuD, à la découverte de la magie derrière certains mots-clés

Vous connaissez peut-être trois à cinq commandes aujourd’hui et ce n’est pas grave, c’est vraiment bien si vous savez vraiment ce qu’il se cache derrière ces commandes. Mais je suis sûr de quelque chose, vous ne connaissez même pas la commande la plus utile.

J’ai besoin d’aide, je ne sais pas à quoi ça sert

❯ git help

Comme toutes choses, un programme est livré avec de la documentation, donc git help sera votre meilleur ami dans votre apprentissage, Google n’est pas la seule solution lorsqu’on ne sait pas. Disons que vous ne savez pas comment fonctionne git add ? Rien de plus simple, tapez git help add et les informations dont vous aviez besoin se trouvent juste sous vos yeux, si ce n’est pas le cas, c’est que vous cherchez sûrement au mauvais endroit.
Comme second meilleur ami, la commande man, elle vous affichera la manuel de n’importe quelle commande, y compris git.

❯ git help
❯ man git

Donc voilà, deux commandes et vous êtes les maîtres du monde, je pense que je peux m’arrêtez ici. Non, plus sérieusement, on a encore un peu de chemin à faire.

Personne ne vous a dit qu’il fallait se présenter ?

git voudra peut-être vous connaître avant d’aller plus loin, après tout c’est normal, vous ne vous connaissez pas, je suppose que c’est mieux si vous lui dites qui vous êtes.

❯ git config --global user.name "Xavier Login"
❯ git config --global user.email xavier.login@example.com

Ces deux commandes permettront à git de connaître votre identité, car vous pouvez envoyer votre travail sur certains serveurs git, vous pouvez facilement suivre si vous avez fait telle ou telle modification en regardant l’auteur des travaux.

Une bonne chose à signaler est que toutes ces informations sont stockées dans le fichier .gitconfig situé dans votre HOME, ou ~.

En piste

Il y a deux façons d’obtenir un dépôt git, et c’est vraiment simple, supposons que vous n’ayez rien, vous devez dans ce cas initialiser votre dépôt, la commande sera donc git init. Imaginons maintenant que vous ayez déjà un dépôt, vous voulez donc cloner votre projet, ce sera alors git clone. Notez que git clone demandera toujours un dépôt distant3, vous devez donc le préciser. Vous pouvez noter ces deux commandes:

❯ git init
❯ git clone git@github.com/iRyukizo/trantor

Comment se porte git ?

C’est vrai ça, comment se porte votre dépôt ? A tout moment, vous pouvez consulter le statut de votre dépôt grâce à la commande git status. Cette commande vous affichera les modifications qui ne sont pas validées, enregistrées, si vous ajoutez des fichiers pour enregistrer les modifications, ils apparaîtront alors en vert, et dans le cas contraire en rouge.

❯ git status

Git Status Notez que si vous validez vos changements avec la commande git commit, les fichiers modifiés n’apparaîtront plus avec git status.

Qu’est ce qui a été fait jusqu’à présent ?

D’accord, vous pouvez créer un dépôt git, vérifier son statut, imaginer que vous clonez un dépôt et que beaucoup de travail a été fait auparavant, que faire si vous voulez savoir ce qui a été fait ou vérifier si vos travaux sont bien présents et donc continuer à travailler. (dans le cas où vous avez travaillé ailleurs que sur votre session actuelle).

❯ git log

git log vous aidera à tout moment, vous pouvez voir tous les travaux précédents représentés par des commits. Git Status Comme vous pouvez le voir, il y a quatre commits, donc je peux maintenant être sûr que si j’ai poussé plus de quatre commits, mon travail n’est pas à jour. Dans le cas où vous avez poussé moins de quatre commits et que vous ne savez pas d’où cela vient, ce n’est pas normal. git log posséde quelques fonctionnalités intéressantes, vous pouvez y jeter un œil avec git help log.

Validé

Avant de créer un commit, vous allez travailler sur votre projet et apporterez beaucoup de modifications, ces modifications doivent être ajoutées à votre dépôt git avec git add. Git Status Avec notre exemple, le fichier est désormais considéré comme ajouté et prêt à être “validé”(commit).

Alors, qu’est-ce que commit ? Supposons que vous ayez effectué des travaux sur votre dépôt, et que vous souhaitiez enregistrer ces modifications, vous allez donc créer un commit avec le travail que vous souhaitez, vous pouvez spécifier ces travaux avec le nom des fichiers que vous souhaitez ajouter puis le valider avec git commit et un message.

❯ git add my_precious_work.c README
❯ git commit -m "work: fixed error"

git commit ouvrira un éditeur de texte pour spécifier le message que vous souhaitez laisser. Avec ces deux commandes, votre précieux travail est maintenant enregistré dans votre dépôt localement. NOTA BENE: Il est important de bien décrire votre commit en rendant le message le plus clair possible.

Localement ? Mais je veux que mon travail soit partout

❯ git push

Votre travail est enregistré localement et vous souhaitez maintenant le partager avec le monde entier. Pas de problème, git push est là. git push enverra votre travail au dépôt distant3 et ensuite vous pourrez vous reposer. Si toutefois, n’êtes pas sûr, git log est votre ami, laissez-moi vous montrer. Git Log D’accord, il y a deux choses que vous devez souligner, la première est que lorsque votre commit n’est pas poussé, il apparaîtra comme ceci: Git Push Et quand c’est le cas, cela apparaîtra comme ça: Git Pushed Le dépôt distant3 origin sur la branche4 master est dans le même état que votre dernier commit.

Restons à jour par pitié

Supposons que vous travaillez avec d’autres personnes ou que vous travaillez à partir d’un autre endroit, vous devez maintenir le dépôt git à jour. Pour ce faire, vous avez git pull, il rapatriera les fichiers distant s’il y en a et déclarera dans le cas contraire que votre dépôt est à jour.

❯ git pull

Divers

Je vais vous montrer quelques fonctionnalités intéressantes et utiles que vous devriez connaître et qui peuvent être très utiles dans la vie de tous les jours.

Ignorons les

.gitignore est un fichier que vous pouvez déposer à la racine de votre dépôt et il dira à git d’ignorer certains fichiers. Par exemple:

*.exe
*.o
*.out
bin/
obj/

Avec ce .gitignore, tous les fichiers avec .exe, .o ou .out comme extension seront ignorés. Les dossiers nommé bin/ ou obj/ et leur contenu seront ignorés. Ainsi, git add ne les prendra pas en compte.

Qu’est ce qui a changé ?

❯ git diff

Imaginez que vous ayez modifié le contenu de certains fichiers, mais que vous ne savez pas ce qu’il contenait initialement. Appelez simplement git diff et vous saurez maintenant. Git Diff - représentera l’état distant et + l’état local.

J’aurai peut être pas dû push ça…

❯ git rm --cached file
❯ git rm --cached -r directory

git rm --cached permet de supprimer un fichier sur le dépôt distant tout en le laissant présent en local. Tout comme git add, il faudra commit et par la suite push les modifications.

Qu’est ce que je viens de faire ?

❯ git reflog

git reflog est la chose la plus utile que vous devez savoir pour le moment. Imaginez que vous n’êtes pas sûr de l’action que vous venez de faire, que vous voulez la déboguer, mais que vous ne vous en souvenez pas, cette commande est parfaite. Git Diff Les deux dernières actions étaients des commit.

Résumé

Je vais essayer de récapituler chacune des commandes que je vous ai présentées et leurs utilitées.

  • git help, pour chaque fois que vous avez une question.
  • git init, initialisez un dépot git à partir de zéro.
  • git clone, clonez un dépot.
  • git status, vérifiez l’état de votre dépot.
  • git log, affiche la liste de tous les commits.
  • git add, ajoutez des fichiers pour être validé(commit).
  • git commit, enregistrez votre travail en tant que commit.
  • git push, envoyez votre travail au dépot distant.
  • git diff, vous montre la différence entre vos fichiers locaux et vos fichiers distants.
  • git rm --cached, supprime les fichiers sur le dépôt distant.
  • git reflog, vous montre toutes les directives que vous avez utilisées.

C’est tout ?

Non pas vraiment, git a beaucoup de fonctionnalités, et il est trop tôt pour en parler. Je parlerai peut-être de l’utilisation des branches4 dans git plus tard, mais comme je l’ai dit, toutes les fonctionnalités que je viens de montrer semblent essentielles en tant qu’étudiant de premiere année.

Liens et plus

References


  1. Tech Talk: Linus Torvalds on git, https://www.youtube.com/watch?v=4XpnKHJAok8&t=1340s ↩︎

  2. Gestion de versions, https://fr.wikipedia.org/wiki/Gestion_de_versions ↩︎

  3. Dépôts distants, https://git-scm.com/book/fr/v2/Les-bases-de-Git-Travailler-avec-des-d%C3%A9p%C3%B4ts-distants ↩︎

  4. Les branches avec Git, https://git-scm.com/book/fr/v2/Les-branches-avec-Git-Les-branches-en-bref ↩︎