Skip to content

Utilisation de Git

Shauni edited this page Oct 20, 2017 · 3 revisions

Doc-Git

Sommaire

  1. Présentation de GIT
  2. Lexique
  3. GIT en ligne de commandes
  4. Utilisation de SourceTree
  5. Utilisation de GitKraken

GIT

Git est un logiciel de gestion de versions qui gère l'évolution du code au fil du temps. On le représente visuellement par un arbre.

⚠️ Cet outil nécessite des connaissances et une maîtrise afin d'éviter tout problème de conflit ou de régression du code source.

Lexique

  1. Push : Pousse les données locales vers le serveur git distant.
  2. Pull : Récupère l'historique du serveur en mettant à jour les branches locales.
  3. Fetch : Récupère l'historique du serveur sans l'appliquer sur les branches locales.
  4. Add : Permet de rajouter des fichiers au projet.
  5. Commit : Après avoir fais un changement, permet de le valider sur les branches locales.
  6. Rebase : Récupère tous les changement d'une branches afin d'y appliquer ceux d'une autre branche.
  7. Merge : Permet de fusionner des branches. ⚠️ Attention aux conflits !

Command Line

L'outil git est un outil extrêmement puissant offrant des utilisations variées. Prenons un exemple.

Première étape : travailler en local et mettre à jour le dépôt distant

Nous commençons par cloner un dépôt distant :

$ git clone [lien du dépôt]

Maintenant nous souhaitons commencer à travailler sur une fonctionnalité. Pour ce faire, nous allons créer une branche afin de ne pas polluer les branches sur lesquelles d'autres personnes peuvent travailler :

$ git checkout -b [nom de la branche]

Dans le cadre de cette fonctionnalité, nous modifions des fichiers et en ajoutons. Afin de sauvegarder ces changements, nous indiquons que nous avons ajouté des fichiers :

$ git add [* ou /chemin/vers/le/fichier]

Puis nous "sauvegardons" ces changements en y ajoutant une brève description :

$ git commit -m "[Description de la/des modifications.]"

❓ Mais il n'y a aucun changement(s) sur le dépôt distant, c'est normal ?

Tout à fait. Afin de pouvoir visualiser les changements sur le serveur, il faut les lui envoyer. Pour ce faire, il faut utiliser la commande push.

⚠️ Avant d'envoyer les données sur le dépôt, il faut vérifier que nous sommes bien à jour avec le dépôt distant. Pour ce faire, il faut récupérer l'historique du dépôt distant avec cette commande :

$ git fetch -a

Cette commande peut aboutir à deux résultats différents :

  • soit des changements ont eu lieu sur le dépôt ;
  • soit aucun changements n'a eu lieu.

Dans le premier cas, si des changements ont eu lieu sur votre branche, remettez vous à jour à l'aide de la commande suivante (:warning: Attention aux conflits !) :

$ git rebase origin/[nom de votre branche]

Dans les autres cas, vous pouvez envoyer vos changements.

$ git push

⚠️ Cette commande envoie seulement les changements que vous avez effectué sur la branche courante. (Vérifiez bien sur quelle branche vous vous trouvez avant de la lancer !)

Seconde étape : Préparer une merge/pull request

Après un travail acharné, nous considérons que notre features est parfaite. Ainsi, nous voulons la réintégrer avec le projet principal. Nous avons beaucoup travailer et du temps est passé entre notre début de travail et le moment actuel. Nous allons donc récupérer les changements fait sur le dépôt dans un premier temps :

$ git fetch -a

Des changements ont pu avoir eu lieu sur le dépôt et nottament sur la branche sur laquelle nous souhaitons y placer notre travail. Nous allons donc mettre à jour notre branche vis-à-vis de celle que nous souhaitons :

$ git rebase origin/[branche avec laquelle nous souhaitons fusionner]

A ce stade, nous sommes presque prêt à effectuer une fusion des deux branches. Or notre branche de travail n'est pas propre est comporte 52 commits qui ne servaient qu'à nous. Nous ne voulons donc pas les voir sur la branche sur laquelle nous allons nous fusionner. Un petit nettoyage s'impose ! Nous allons faire en sorte de n'avoir plus qu'un commit qui inclus tous nos changements.

$ git rebase -i HEAD~52

Un éditeur de texte s'ouvre alors affichant un fichier de ce type :

pick f7f3f6d Travail 1
pick 310154e Travail 2
pick a5f4a0d Travail 3

# Rebase 710f0f8..a5f4a0d onto 710f0f8
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#

Ce fichier liste tout vos commits. Pour tous les fusionner en un seul, il faut le modifier comme suit :

pick f7f3f6d Travail 1
s 310154e Travail 2
s a5f4a0d Travail 3

# Rebase 710f0f8..a5f4a0d onto 710f0f8
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#

En validant vos changements, vous aurez un autre fichier résumant tous vos commits. Vous pouvez le modifier en précisant le travail que vous avez effectuer. ⚠️ Il est déconseillé de laisser le fichier de base. Modifiez le pour n'avoir plus qu'un message résumant tout votre travail. (ou le nom/numéro de votre ticket).

Maintenant, il ne vous reste plus qu'à créer votre merge/pull request ! Voici comment faire :

⚠️ Évitez à tout prix de lancer la commande git merge si vous n'êtes pas absolument sûr de ce que vous faites !

SourceTree

Présentation

SourceTree est un logiciel d'Atlassian. Il facilite la gestion de versions avec Git en proposant une interface claire et facile d'utilisation.

Il est capable de se brancher à un projet GitHub ou Bitbucket (plateforme d'Atlassian) facilement.

La visualisation des branches et des commits sous forme de schémas en fait un outil puissant.

Vous pouvez le télécharger ici.

Utilisation

SourceTree screenshot

Ce sont les 3 boutons principaux de SourceTree !

GitKraken

Présentation

Utilisation


Sources

Clone this wiki locally