Git avec Terminal

L’outil ultime pour le versionnage de fichiers avec Git dans l’Environnement de test DE Africa est le Terminal. Vous pouvez ouvrir une fenêtre Terminal à partir de l’onglet Lanceur en cliquant sur l’icône Terminal.

Le lanceur Jupyterlab de DE Africa Sandbox.

Dans cette section, nous allons montrer comment utiliser Terminal pour créer une branche et pousser les changements vers votre fork. Cela implique de taper des commandes dans la ligne de commande du Terminal.

Il est supposé que vous avez bifurqué et cloné le repo « deafrica-sandbox-notebooks » comme décrit dans la section Connexion à Git. La familiarisation avec la section Git avec le menu Git, y compris les concepts tels que push, pull, branch et commit sera utile. Si vous êtes novice en matière de Git, nous vous encourageons à essayer les deux tutoriels.

Please ensure you have also updated your fork to match digitalearthafrica:master by selecting Fetch upstream and Fetch and merge from your fork’s GitHub page.

Un récapitulatif sur la raison pour laquelle nous créons une branche pour faire des changements :

  • La branche master est la branche principale qui contient tout le code le plus à jour et testé.

  • Chaque fois que vous voulez ajouter une nouvelle fonctionnalité ou tester du code, vous créez une nouvelle branche.

  • La nouvelle branche contient tout le code de master, mais toute modification apportée à cette branche n’affecte pas master.

  • Une fois que vous êtes sûr que vos modifications fonctionnent, vous pouvez demander à ce qu’elles soient ajoutées à master dans une demande de révision (traitée dans une section ultérieure du guide).

Terminal : une panne

L’interface du terminal comporte deux éléments principaux :

  1. Le répertoire actuel dans lequel vous vous trouvez

  2. La ligne de commande, où vous pouvez taper des commandes

Capture d'écran de l'interface du terminal.

Vérifiez que votre clone est à jour

  1. Ouvrir une fenêtre de terminal à partir d’un onglet du Lanceur. Vous pouvez ouvrir un nouvel onglet du Lanceur en appuyant sur le bouton + en haut du menu du navigateur de fichiers.

Les terminaux démarrent automatiquement dans votre répertoire personnel. Tapez ls et appuyez sur Enter sur votre clavier pour afficher tous les fichiers et dossiers de votre répertoire personnel.

Fichiers dans votre répertoire personnel.

  1. Change the directory of your Terminal to your clone of the deafrica-sandbox-notebooks repo. This can be done by using cd, the « change directory » command. The syntax is cd <folder name>/.

Dans Terminal, tapez :

cd dev/deafrica-sandbox-notebooks/

et appuyez sur « Entrée ». Remarquez que votre répertoire a maintenant changé : le $ est maintenant après /dev/deafrica-sandbox-notebooks.

Changez le répertoire de votre terminal.

  1. Vérifiez que votre clone est à jour en exécutant :

git pull

Cela va tirer toutes les modifications entre votre fork et ce clone local.

Conseils pour les terminaux

  • Appuyez sur la touche Tab de votre clavier pour compléter automatiquement les chemins et les noms de fichiers. Cette opération est beaucoup plus rapide et généralement plus précise que la saisie manuelle.

  • Appuyez sur la touche fléchée Haut de votre clavier pour accéder aux commandes du terminal que vous avez précédemment exécutées. Idéal pour répéter une commande.

  • Le navigateur de fichiers n’indique pas le répertoire dans lequel se trouve votre terminal. L’emplacement du répertoire du terminal et l’emplacement du dossier du navigateur de fichiers sont totalement indépendants.

  • Le navigateur de fichiers affiche le contenu de la branche dans laquelle vous vous trouvez. Cela signifie que les fichiers d’une branche mais pas d’une autre apparaîtront ou disparaîtront lorsque vous changerez de branche. Par conséquent, il est toujours bon de savoir sur quelle branche vous vous trouvez.

  • Les commandes du terminal sont sensibles à la casse.

Par convention, le code Terminal est souvent identifié par un ! en début de ligne, mais pour plus de clarté, il ne sera pas utilisé dans ce tutoriel car ! n’est pas nécessaire dans Terminal lui-même. (Les Jupyter Notebooks permettent d’exécuter des commandes Terminal à l’intérieur des fichiers .ipynb en utilisant des cellules de code commençant par ! ; ceci n’est pas couvert ici).

Tutoriel : Utiliser le Terminal pour créer une nouvelle branche et effectuer des modifications

Nous utiliserons le terminal dans le bac à sable pour :

  • créer une nouvelle branche ;

  • ajouter un fichier (cela sera fait en utilisant le navigateur de fichiers, bien que cela puisse être fait par Terminal) ;

  • valider les changements ; et

  • pousser les changements vers le dépôt distant.

Les commandes de votre terminal peuvent être différentes si vous avez nommé vos dépôts ou vos branches différemment des exemples fournis ici ou dans le tutoriel Connect to Git, ou s’ils sont situés dans une disposition de dossiers différente.

Créer une nouvelle branche

  1. In the Terminal, navigate to your deafrica-sandbox-notebooks directory if you aren’t there already.

cd dev/deafrica-sandbox-notebooks/
  1. Créez une nouvelle branche en utilisant la commande git checkout -b. git checkout se déplace entre les branches, et le -b crée une nouvelle branche.

git checkout -b git-terminal

Vous verrez le message « Commuté vers une nouvelle branche “git-terminal” ».

Ajouter un nouveau fichier

  1. Ouvrez le navigateur de fichiers. Naviguez. Cliquez sur l’icône Notebook > Python 3 dans le Lanceur pour créer un nouveau fichier Jupyter Notebook.

Retourner à la vue des dossiers

  1. Le fichier s’ouvre automatiquement.

Créer un nouveau fichier

  1. Type something in the first cell of the file, for example print("This is a change to the git-terminal branch"). Ensure the dropdown menu at the top of the file says « Code ». Press Shift + Enter on your keyboard to execute the cell. This will print the text you entered underneath the code cell.

  1. Let’s rename the file. Right-click on the file in the file browser and select Rename.

Renommer le fichier

  1. Tapez le nom de votre nouveau fichier. Ici, nous l’avons appelé « ma-modification ». Il porte l’extension .ipynb.

Le fichier est renommé.

Commit changes : track new files

  1. Retournez dans votre onglet Terminal et exécutez

git status

Cela affichera une sortie indiquant la branche actuelle et les fichiers non suivis, comme le nouveau fichier que vous venez de créer.

Les nouveaux fichiers ne sont pas suivis.

  1. Comme suggéré dans la sortie du Terminal, nous utilisons git add <filename> pour commencer à suivre le fichier.

git add my-change.ipynb

Lancez à nouveau git status pour voir que le nom du fichier est passé à une couleur verte et qu’il n’est plus indiqué untracked.

Ajouter un nouveau fichier pour le suivre.

  1. Retournez dans « ma-modification.ipynb » et ajoutez du texte ou du code. Sauvegardez le fichier.

  2. Revenez à l’onglet Terminal et exécutez à nouveau git status. Les modifications apparaissent comme des changements non indexés.

Modifications non échelonnées.

Exécutez git add my-change.ipynb à nouveau pour inclure les nouvelles modifications dans votre commit.

  1. Quand tous les changements que vous voulez faire dans ce commit sont mis à jour, exécutez la commande

git commit -m "This is a brief description of my commit."

Le texte entre guillemets doit être remplacé par une brève description de l’engagement.

  1. Lancez à nouveau git status, et vos modifications ont disparu. La sortie dira « rien à commiter, arbre de travail propre ».

Commit changes : set upstream

La manière la plus simple de régler en amont est la suivante :

  1. Cours :

git push
  1. Cela vous donnera le message d’erreur suivant : « fatal : The current branch git-terminal has no upstream branch ». Il vous suggérera une commande qui ressemble à :

git push --set-upstream origin git-terminal
  1. Le code suggéré est généralement correct. Utilisez votre souris pour copier la ligne de code suggérée. Copiez en appuyant sur Ctrl+C puis cliquez de nouveau sur le curseur de texte de votre ligne de commande. Collez en utilisant Ctrl+V` et appuyez sur Enter` pour exécuter.

  2. Saisissez votre nom d’utilisateur GitHub et votre jeton d’accès personnel ou similaire, comme demandé.

Pousser les changements engagés

  1. Revenez à l’onglet Terminal. Exécutez :

git push
  1. Entrez les informations d’identification Git comme demandé.

Congratulations, you’re all done. As suggested in the previous section, you can now go to your fork on the GitHub website and check for your new branch, git-terminal, as well as the new file only visible there.

Liste de contrôle Git avec « git status ».

Les éléments à vérifier lorsque vous vous connectez à l’Environnement de test et que vous commencez à travailler sur votre projet de code source ouvert :

  • Avez-vous récupéré et fusionné en amont pour que votre fork soit à jour avec le dépôt d’origine ?

  • Sur quelle branche êtes-vous ? Est-ce la bonne branche pour travailler ?

  • Avez-vous pullé et fusionné les dernières modifications de votre clone à partir de votre fork du référentiel ?

La commande git status vous aidera à identifier la branche sur laquelle vous êtes actuellement, ainsi qu’à lister les changements staged ou unstaged, et les fichiers non suivis.

Résumé des commandes du terminal

  • cd <chemin du dossier> Change le répertoire pour le nouveau chemin du dossier

  • cd ..`` Remonte d’une unité dans le chemin du dossier (retour d’un dossier)

  • cd Remet le répertoire à la maison

  • ls Montre les fichiers et les dossiers dans le répertoire actuel

  • git status Résumé de votre dépôt Git

  • git pull Pulse les commits du distant vers le local.

  • git checkout -b <nom de la nouvelle branche> Crée une nouvelle branche basée sur la branche courante et extrait la nouvelle branche.

  • git checkout <branche nom> Vérifie la branche existante

  • git add <fichier ou dossier> Met en scène tous les changements dans le fichier ou le dossier.

  • git commit -m "description" Commet des changements échelonnés à un commit décrit par la description.

  • git push Pousse les commits vers le repo distant

Avec un peu de pratique, les commandes du Terminal sont plus rapides que l’utilisation de l’interface du menu Git, et peuvent fournir un plus grand niveau de contrôle et de flexibilité.

Problèmes courants

  • Terminal error « fatal: not a git repository ». This occurs when your Terminal directory location is not a folder linked to a Git repo. Your home directory is not linked to Git, and your dev folder is not linked to Git.

  • **Un de mes fichiers a disparu mais je ne l’ai pas supprimé **Vous pourriez être sur la mauvaise branche. Lancez un git status pour vérifier votre branche actuelle. Utilisez git checkout <branch name> pour vous déplacer entre les branches.

  • **Pour des raisons de sécurité, l’Environnement de test requiert un jeton d’accès personnel distinct de votre mot de passe, ou une autre forme d’authentification multifactorielle. Ils sont simples à mettre en place. Voir l’article officiel de GitHub et le guide lié à la page Connexion à Git.

Comme Git est bien documenté en ligne, il est recommandé de rechercher sur Google tout problème lors du dépannage.

Tutoriel wiki GitHub

Une version concise de ce tutoriel se trouve sur le wiki deafrica-sandbox-notebooks”. Il contient également des commandes utiles du Terminal qui ne sont pas décrites ici.

Prochaines étapes

One way or another, you have made changes to your fork of the repository. You’ve branched, committed, pulled and pushed, and your code is ready to be seen by the masses.

The only problem — it’s on your GitHub repository and no one else knows it’s there. Time to fix that: the next section shows you how to make a pull request. Pull requests allow users to propose code mergers between repositories and branches through a documented review system.

Cliquez sur suivant pour continuer.