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>:
<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é