Le blog de la CT2C

Terminal Bash et Git

Par Arpsara , publié le 17 Octobre 2013

Suite à la formation donnée par Régis sur Leeaarn, je remets sur le blog une série d'articles que j'avais rédigé pour apprendre à utiliser un terminal bash.


Euh... Un terminal bash ?

Un terminal bash est une console de commandes, que vous pouvez voir comme un "Explorateur Windows" sans souris. Il permet en quelques lignes de:
- naviguer entre les dossiers et les sous-dossiers de l'ordinateur,
- créer des dossiers, fichiers, etc.
- obtenir des informations utiles sur le système ou vos fichiers...

On peut "ajouter" de nouvelles commandes à ce terminal (en ajoutant des fichiers exécutables à la variable d'environnement PATH, par exemple). Notamment lors de l'installation d'un environnement Ruby On Rails, de nouvelles commandes sont disponibles dans le terminal, qui permettent par exemple de :
- créer de nouveaux projets Rails,
- exécuter des tâches liées à l'application (comme la mise à jour de la base de données),
- et de lancer un serveur virtuel sur votre ordinateur...

Et encore, ce n'est là qu'une liste non exhaustive.

Pour naviguer dans les différents dossiers, vous aurez ainsi besoin de taper:

    
cd c: (pour aller dans le disque « C: »)
cd Ruby192 (aller dans le répertoire de Ruby192)
cd .. (pour retourner dans le dossier parent)
ls (affiche l'ensemble des éléments d'un dossier)

mkdir mon_repertoire (crée le dossier mon_repertoire dans le dossier courant)
rm mon_repertoire (supprime le répertoire mon_repertoire s'il est vide)
rm fichier (supprime le dit-fichier)

La flèche haut du clavier permet de remonter dans les commandes tapées précédemment et la flèche vers le bas permet de descendre dans les commandes si vous avez déjà appuyé sur flèche haut. Plutôt pratique pour éviter de ré-écrire tout le temps les mêmes commandes. ;)

Aussi, prenez l'habitude d'utiliser la touche « tab » pour l'auto-complétion. Elle vous évitera bien des erreurs, et un gain de temps considérable. Ca fonctionne très simplement, par exemple vous voulez vous rendre dans le dossier : "jai_un_nom_a_rallonge". Si vous commencez à écrire dans le terminal : "$ cd jai_" puis que vous appuyez sur la touche "tab" de votre clavier, l'auto-complétion devrait se charger pour vous de terminer d'écrire le nom du dossier.

Ce sont les quelques commandes les plus utiles. Il y en a bien d'autres... Si vous souhaitez apprendre à vous servir d'un terminal de A à Z, je vous invite à découvrir le tutoriel sur le terminal bash site open-classrooms.

Note : sous Linux l'utilisation de ce terminal est indispensable. Sous Mac, on retrouve également ce même terminal. Sous Windows, si vous utilisez "cmd.exe" vous n'aurez pas du tout les mêmes commandes. Préférez l'utilisation de Git Bash, par exemple, que vous obtiendrez en installant msysgit. Sous Windows, encore, si vous avez installez Rails avec Rails installer, sachez qu'il vous installe aussi un terminal que vous pouvez utiliser.

Apprendre à gérer les différentes versions de son projet avec Git


Si vous travaillez sur un gros projet et/ou en équipe, vous apprécierez sans aucun doute que votre travail ne soit pas malencontreusement effacé par un collègue ou que vos tentatives infructueuses pour implanter une fonctionnalité complexe bousille votre projet, qui avant toutes vos manipulations marchait très bien...
C'est pourquoi nous allons de ce tutoriel apprendre à utiliser la fonctionnalité de gestion de version de Git: un outil très pratique pour développer en toute sérénité !


Le principe de gestion de version, c'est très simple: vous avez une branche principale nommée "master" qui constitue la base de votre projet. Cette branche là contient votre code qui, normalement, fonctionne parfaitement.

Pour implanter le système de gestion des versions de git, sur un nouveau projet ou un projet déjà existant, assurez-vous d'être dans le dossier de votre projet et tapez la commande suivante:

git init

Voilà ! Si vous êtes sur votre éditeur de code, vous devriez apercevoir dans l'explorer, à côté du dossier contenant votre projet, un joli "[master]".

Pour développer en toute sécurité (et ne pas avoir à tout réécrire si finalement, le bout de code que vous essayez désespérément d'implanter ne veut toujours pas fonctionner!), on ouvre pour cela une branche qui vient se greffer à la branche principale du projet.

Pour ouvrir une nouvelle branche, la commande est la suivante:

git branch "nom_de_ma_branche"

Avant plus d'explications, tapez les commandes suivantes:

git add .
git checkout "nom_de_ma_branche"
git commit

A présent, dans l'explorateur de fichiers de votre éditeur de code, vous devriez voir apparaître à la place du "[master]" le nom de votre branche "[nom_de_la_branche]".

Si vous avez l'oeil observateur, à part ce nom qui change, rien d'autre a priori n'est changé ! C'est tout à fait normal: la commande "git add ." permet de "copier" en mémoire la branche master, et la commande "git commit" de la "coller" dans une nouvelle branche. Rien de plus logique: pour pouvoir développer une nouvelle fonctionnalité sur un projet, il faut bien partir du projet en lui-même ! ;)

La grande différence réside dans le fait que si vous ajoutez ou enlevez des fichiers, cela n'affectera en aucun cas la branche "master", puisque vous êtes dans "nom_de_la_branche". Dans un coin, vous aurez votre projet "intouché", et dans un autre, une ou plusieurs branches "test". Idéal pour développer en toute sérénité !

Quatre cas de figures se présentent ensuite:
- Cas de figure n°1: vous n'avez pas fini de bidouiller et modifier le code de votre branche, mais il est déjà 2h30 du matin et vous devez aller vous coucher: pas de panique ! Vous n'avez aucune manipulation particulière à faire, mis à part "Sauvegarder" normalement vos fichiers. (Ha, ce bon vieux ctrl+s). La sauvegarde s'effectuera sur les fichiers de la branche dans laquelle vous vous trouvez.
Vous pouvez également décider de sauvegarder tout cela sur git, avec un petit commentaire en prime. Pour cela, tapez:

git commit -m "commentaire_sur_la_modification_effectuee"

Et voilà, vous pouvez allez dormir tranquille.
Ha, oui, j'oubliais ! Pour voir les différences entre vos "commit" et les commentaires associés, tapez:

git log
Ca va vous être très utile ! ;)

- Cas de figure n°2: votre développement n'a pas été à la hauteur de vos attentes (ou mince, vous vous êtes trompé tout simplement trompé de nom!), et vous souhaitez supprimer la branche: très bien ! Pour cela, vous allez devoir dans un premier lieu retourner sur la branche "master". Ensuite seulement, vous pourrez supprimer la branche.
git checkout "master"
git branch -d "nom_de_la_branche"

- Cas de figure n°3: votre boss décide de vous faire travailler sur une autre fonctionnalité à implémenter en toute urgence: vous allez devoir quitter la branche sur laquelle vous êtes en train de développer, et devoir créer une nouvelle branche.
Tout d'abord, sauvegardez vos fichiers, puis retournez sur la branche "master":

git commit -m "mon_commentaire"
git checkout "master"

Créez ensuite une nouvelle branche, comme on l'a vu ci-dessus, et vous voilà reparti pour travailler dessus ! ;)
Pour le cas où vous auriez oublié les différentes branches que vous avez créées, tapez simplement:

git branch
- Enfin, cas de figure n°4: votre branche est fonctionnelle et que vous souhaitez la fusionner avec la branche principale. Voici les manipulations à effectuer:
git checkout "master"
git merge "nom_de_la_branche_a_fusionner"

Si la fusion se passe correctement, vous en avez fini ! Il se peut toutefois que certains fichiers que vous avez modifié soient en conflit. Pour repérer desquels il s'agit, tapez:
git diff
et modifiez-les manuellement. Il ne vous reste plus qu'à sauvegarder le tout !
git commit -a
Et voilà ! Vous avez à nouveau une branche "master" qui fonctionne parfaitement ! Il ne vous reste plus qu'à créer de nouvelles branches pour continuer de développer votre projet !

Hey, mais... et la partie collaborative alors ? Pour ce qui est de la création de branches, de sauvegarder et commenter ses fichiers, tout est pareil ! Voici simplement quelques commandes "en plus" qui vous pourront vous être utiles:
git clone /home/nom_de_repertoire/mon_site

va vous permettre de "cloner" un dossier présent sur un autre ordinateur (à condition d'y avoir accès, bien sûr!)

Une fois le développement terminé par l'un des collaborateurs, le principe consiste à fusionner la branche "master" de la personne qui a terminé à la branche sur laquelle le partenaire travaille. Pour ce faire, c'est donc celui qui n'a pas fini de développer sa partie qui doit, dans la branche sur laquelle il travaille, fusionner la branche "master" de son collaborateur à sa version. Cela se fait grâce à la commande:

git pull /home/nom_du_repertoire/mon_site
Comme dans le cas de figure n°4, il se peut qu'il y ait des conflits dans les fichiers. A priori, vous devriez savoir faire: la manipulation pour les résoudre est la même ! ;)

Voilà, nous en avons fini avec Git et ses branches ! J'espère que vous saurez en faire bon usage et apprécier cette petite merveille en matière de développement ! N'hésitez également pas à regarder ce tutoriel en anglais pour en apprendre davantage sur la magie de Git !


Index -- --

  • Aucun commentaire - Soyez le premier !

Insérez votre commentaire
  1. Min: 50 caractères, Max: 800. Actuellement: 0 caractères

  2. ne pas remplir