Utiliser Ungit

Introduction


Pour installer Ungit: Installer Ungit

Nous allons voir comment créer une répertoire git avec ungit.





Ouvrir le terminal dans le dossier souhaité

Mac

  • Aller dans Préférences Système (par exemple via la fonction recherche)

  • Puis sélectionner Clavier

  • Sélectionner l'onglet Raccourci en haut

  • Puis la rubrique Services sur la gauche

  • Dans la partie Fichiers et dossiers, selectionner Nouveau terminal au dossier, afin que cette fonctionnalité apparaisse au clic droit sur un dossier

  • Dans le Finder, trouver le dossier dans lequels vous aurez votre code source (dans cet exemple, le dossier Programmation)

  • Sur ce dossier, faites clic droit

  • en bas du menu (ou dans le sous-menu service) cliquer sur Nouveau terminal au dossier

  • un terminal s'ouvre dans le dossier demandé (ici Programmation)

Windows

  • Pour cela, ouvrer le dossier où vous souhaitez avoir vos fichiers à developper.

  • Dans ce dossier, faire Maj + clic droit et sélectionner Ouvrir la fenêtre PowerShell ici dans le menu qui s'ouvre


  • En ligne de commande, dans le bon dossier avec vos codes sources ou vos futurs codes sources (ex: Programmation sur l'image), taper ungit puis faites "Entrée"

  • Une page s'ouvre sur votre navigateur, il s'agit de l'interface ungit

  • Vous allez pouvoir créer un repertoire git (via Create Repository) ou cloner un répertoire existant (via Clone Repository)

Utiliser ungit avec en créant un répertoire git dans votre dossier

Nouveau répertoire

  • Cliquer sur Create Repository en bas à gauche:

Cette étape est l'équivalent en ligne de commande dans un terminal à git init

  • La page affiche "Nothing to commit" (rien à commit) si le dossier est vide

  • Nous allons ajouter un fichier dans le dossier.

  • Pour cela, créer un fichier html Hello word par exemple, et l'enregistrer dans le dossier en cours (ex: Programmation)

<!DOCTYPE html>

<html lang="fr">

<head>

<meta charset="utf-8">

<title>Ceci est un </title>

</head>

<body>

<p> Hello World! </p>

</body>

</html>


  • Maintenant, le dossier n'est plus vide

  • Si vous revenez sur la page qui est votre interface ungit, ce nouveau fichier s'affiche

  • Si vous cliquer sur le nom du fichier, vous voyez en vert ce qui a été ajouté

  • Sur la gauche, ajouter un titre et un description (dans l'exemple "Création du fichier Hello World" et "Fichier HTML hello word version 1")

  • Cliquer sur Commit pour faire un commit

  • Une nouvelle branche est créée

Equivalent de la ligne de commande git status : la page dossier ungit

Lorsque vous utilisez git en ligne de commande, taper git status dans un terminal sur le dossier.

  • Cela vous donne la branche en cours (master dans notre cas à ce stade) via la ligne on branch master.

  • Cela vous donne également s'il y a des choses à commiter ou non (ligne nothing to commit)


La page ungit pour un dossier est donc l'équivalent de git status: vous connaissez la branche en cours et s'il y a des commits à faire.

Equivalent de la ligne de commande git add : cocher ou décocher le fichier avant le commit

Lorsque vous utilisez git en ligne de commande, vous utiliserez git add suivi du nom des fichiers à intégrer dans le commit à venir.


La page ungit d'un dossier propose de cocher tous les fichiers avec modification. Si c'est un nouveau fichier, un petit new est afficher à droite du nom. On peut cocher ou décocher le fichier à intégrer ou enlever du commit, ou faire un commit par fichier:

Equivalent de la ligne de commande git commit -m : donner un titre et appuyer sur Commit

Lorsque vous utilisez git en ligne de commande, vous utiliserez git commit -m suivi du titre du commit que vous faites.

La page ungit d'un dossier propose de remplir un Title (à gauche de l'encadrement rouge) et d'appuyer sur commit. Cela fait la même chose que la ligne de commande.

Modifications de fichiers existants

  • Nous allons maintenant ajouter dans le fichier helloworld un titre <h1> "Bonjour le monde" ainsi qu'un paragraphe <p> "Un nouveau commit"

  • Enregistrer vos modifications

  • De retour sur l'onglet du navigateur qui est l'interface ungit, la modification est affichée

  • On peut afficher les détails en cliquant sur le nom du fichier

  • Et nommer et renseigner les détails pour faire un commit

  • Le nouveau commit apparait sur la branche

Equivalent de la ligne de commande git log : la ligne de temps sur la page dossier ungit

Lorsque vous utilisez git en ligne de commande, taper git log dans un terminal sur le dossier. Cela vous donne l'historique de tous les commits.

La ligne de temps sur la page ungit pour un dossier est donc l'équivalent de git status: vous connaissez les commits réalisés précédemment.


Autres modifications pour illustration

  • Nous allons maintenant ajouter dans le fichier helloworld un autre titre <h1> ainsi qu'un nouveau paragraphe <p>:


<!DOCTYPE html><html lang="fr"> <head> <meta charset="utf-8"> <title>Ceci est un </title> </head> <body> <h1> Bonjour le monde </h1> <p> Hello World! </p> <p> Un nouveau commit </p>
<h1> Hello World </h1> <p> Bonjour le monde </p> <p> Un troisième commit </p>
</body></html>


  • Enregistrer vos modifications

  • De retour sur l'onglet du navigateur qui est l'interface ungit, la modification est affichée et on peut voir le détail

  • Avec un nouveau commit:

Demarrer une nouvelle branche

Pour l'instant, nous sommes sur la branche "master". On peut faire des modifications alternatives sans "casser" la branche master, nous allons donc démarrer une nouvelle branche "developpementHdeux".

  • Sur le commit "ajout h1 et p", survoler puis cliquer sur le petit "+" pour créer une nouvelle branche

  • Mettre le nom de la branche (PAS d'espace et pas de chiffres) "developpementHdeux"

  • Cliquer sur "Branch"


  • Le noeud de la branche apparait

Equivalent de la ligne de commande git branch suivi du nom de la nouvelle branche: le "+" à côté de chaque commit dans la ligne de temps

Lorsque vous utilisez git en ligne de commande, taper git branch plus le nom d'une nouvelle branche dans un terminal sur le dossier, cela vous créer une nouvelle branche.

Le "+" à côté des commits dans la ligne de temps de la page ungit pour un dossier est donc l'équivalent de git branch : vous indiquer ensuite le nom de la nouvelle branche et cliquer sur Branch.


Equivalent de la ligne de commande git branch : la ligne de temps dans la page dossier ungit

Lorsque vous utilisez git en ligne de commande, taper git branch dans un terminal sur le dossier, cela vous affiche

  • l'ensemble des branches

  • la branche en cours via un asterisque


Ces branches sont affichées sur la page dossier de ungit via la ligne de temps, et la branche rectiligne sur la gauche est la branche en cours.

Changer de branche

  • La branche est aussi accessible dans le menu

  • Cliquer sur la nouvelle branche developpementHdeux

  • La nouvelle branche en cours (sur laquelle peut se faire le commit) est bien devenue la branche developpementHdeux

  • Si je ré-ouvre mon code source, il affiche la version du commit Ajout h1 et p:

Equivalent de la ligne de commande git checkout suivi du nom de la branche: le menu avec le nom des branches

Lorsque vous utilisez git en ligne de commande, taper git checkout plus le nom d'une branche dans un terminal sur le dossier, cette branche devient la branche en cours.

Sur ungit dans la page de votre dossier, selectionner la banche sur laquelle vous voulez vous placer dans le menu déroulant avec le nom des branches.

Faire des modifications sur une des branches

  • Modifions le code source pour ajouter deux titres h2

  • Un nouveau commit s'affiche

  • On peut donner un titre et une description et le faire

  • La branche developpementHdeux continue avec un nouveau commit

Retour sur la branche master pour nouvelles modifications

  • Comme pour changer de branche précédement, il suffit de selectionner la branche voulue

  • Master est de nouveau la branche en cours sur l'interface graphique

  • Le ficher code source est le fichier correspondant

  • On peut y ajouter des lignes et avant de faire un nouveau commit

  • Je nomme le nouveau commit et je l'exécute

  • Le commit apparait dans l'interface

Faire converger deux branches sans conflit avec Merge

  • Selectionner par un clic long la branche à merger

  • Ici, la branche developpementHdeux

  • Et faire un glisser déposer sur le bouton Merge

  • Le Merge a été effectué

  • Comme il n'y a pas de conflit, les modifications des deux braches se sont additionnées

  • Cela est visible sur le code source

Note: différence entre Merge et rebase

Dans l'idée: Merge garde l'historique des branches. Vous pourrez alors revenir sur chaque branche par la suite, et accéder au code source de ces branches.

On l'a vu, si l'on change de branche avant le Merge, les codes sources changent: c'est comme si on n'avait pas fait les changement de master dans developpementHdeux et inversement à partir du noeud de la séparation des deux branches. Cela reste dans l'historique avec Merge.


Rebase additionnent les commit comme s'ils avaient été faits chronologiquement sur une seule branche. On perd donc l'historique par branche.


Quand utiliser Merge: quand on veut garder l'historique par branche

Quand utiliser Rebase: quand on est sur que l'on a pas besoin de l'historique par branche, et que l'on veut simplifier l'historique


Equivalent de la ligne de commande git merge suivi du nom de la branche à fusionner dans la branche en cours: le glisser-déposer d'une branche sur la branche principale

Lorsque vous utilisez git en ligne de commande, taper git merge plus le nom d'une branche dans un terminal sur le dossier, cela "fusionne" la branche nommée dans la branche en cours.

Le glisser-déposer d'une branche sur la branche principale dans la ligne de temps de la page ungit pour un dossier est donc l'équivalent de git merge lorsque vous cliquer ensuite sur le bouton Merge.

Comment faire un Rebase dans ungit?

  • Faire un glisser-déposer de la branche en cours sur le bouton Rebase qui apparait à côté d'une autre branche

Annuler un commit: Revert

  • Pour "enlever" le code ajouté sur un commit plus tôt dans l'historique, cliquer sur le "rond" d'un des commit

  • Sur l'image, nous avons cliqué sur Ajout de deux H2

  • Puis cliquer sur le bouton Revert

  • Un nouveau commit ajoutant l'action d'enlever les lignes de codes ajoutées dans ce commit apparaissent dans un nouveau commit:

Merge avec conflit

  • Revenez sur la branche deveoppementHdeux comme branche courante

  • Remplacer un paragraphe du code source

  • Faire un commit

  • Faire un merge

  • Un conflit apparait

  • Vous pouvez voir le détail

  • Pour simplifier, ici le merge va faire toutes actions. Nous allons les accepter et corriger le code par la suite

  • Pour cela, cliquer sur Conflicts puis marked as solved


  • Solution 1: résoudre les conflits dans le code source

  • Cliquer sur Continue Merge à gauche

  • Le code source correspond bien à l'écran du Merge

  • On nettoie le code des annotations ajoutées par git pour signaler le conflit et on choisit (j'ai gardé "J'ai remplacé le paragraphe")

  • On commit ce nouveau code

  • Solution 2 (attention, imprim'écran correspondant à un autre conflit): Utiliser Patch

  • Une fois les conflits marqués comme résolus, cliquer sur Patch

  • Les lignes se transforment en checkbox, vous pouvez décocher les lignes que vous ne souhaitez pas garder

  • Quand le résultat vous convient (les lignes que vous gardez sont cochées, pas les autres), faites un commit

  • Le commit a pris en compte les lignes gardées

Ungit avec GitHub

Cloner un répertoire

  • Avant d'ajouter un nouveau dossier, ajouter le dossier en cours sur la page d'accueil ungit grâce au "+" à côté de la barre en haut de ungit

  • Récupérer l'url de d'un dépot GitHub

  • Taper dans la barre en haut de ungit une adresse vers un dossier qui n'existe pas encore

  • Cliquer sur Create Directory

  • Indiquer l'url pour cloner le dépot git, et cliquer sur Clone Repository

  • Le dépôt git est cloné

Vous pouvez faire deux dossiers différents en clonant votre dossier GitHub afin de voir comment les élements sont partagés entre deux dossiers clonés à partir du même répertoire GitHub


Equivalent de la ligne de commande git remote add origin suivi de l'url d'un depôt GitHub: l'encadré Clone a git repository... lorsque qu'on initialise un nouveau dossier

Lorsque vous utilisez git en ligne de commande, taper git remote add origin suivi de l'url d'un depôt GitHub dans un terminal sur le dossier, cela clone un dépôt distant sur un ordinateur.


L'encadré pour cloner un répertoire lors de la création d'un nouveau dossier dans ungit est donc l'équivalent.


Commit et push

Le commit permet d'avoir un historique local, mais pas de les partager avec les dépôts distants. Il faut faire un Push pour que les commits soient partagés à distance.

  • Les commit se font comme précédemment

  • Push: Une première solution pour "pusher" les modifications de votre commit (i.e. que vos modifications soient partagées à distance) est d'utiliser la flêche à droite du bouton commit et utiliser le commit and push dans ce menu déroulant

  • Sinon, vous pouvez cliquer sur le "rond" du commit correspondant et cliquer sur Push

  • On vous demandra peut-être votre login et mot de passe

Intégrer les modifications distantes : Checkout

  • Pour faire un Checkout lorsque c'est possible, cliquer sur le bouton dédié