Cloner un dépôt et pousser ton premier commit

Objectifs

À la fin de ce tutoriel, tu sauras :

  • O1. Générer une clé SSH ed25519 et la déclarer dans ton profil gitrust (/settings/keys)
  • O2. Cloner un dépôt gitrust en local via SSH (git clone git@…)
  • O3. Pousser un commit vers gitrust et vérifier le résultat dans l'interface web

Pré-requis

  • Technique : Git installé (git --version répond), un terminal, ton instance gitrust accessible
  • Pédagogique : tutoriel 01 — Premiers pas complété (compte actif, 2FA configurée, un dépôt créé)
  • Temps estimé : ~25 minutes

Vue d'ensemble

Avant de taper la première commande, voici ce que tu vas mettre en place et pourquoi.

SSH (Secure Shell) est le protocole que Git utilise pour envoyer et recevoir du code de manière sécurisée. La différence avec HTTPS : au lieu de saisir un mot de passe à chaque fois, tu déposes une clé publique sur le serveur gitrust, et ta machine prouve son identité grâce à la clé privée correspondante que tu gardes chez toi. C'est à la fois plus sûr et plus pratique.

Voici les trois acteurs de ce tutoriel :

sequenceDiagram
    participant M as Ta machine (terminal)
    participant A as Agent SSH (~/.ssh/)
    participant G as gitrust (:2222 SSH)
    participant W as gitrust (navigateur)

    M->>M: ssh-keygen → génère id_ed25519 + id_ed25519.pub
    M->>W: dépôt de id_ed25519.pub dans /settings/keys
    M->>A: ssh-add id_ed25519 (optionnel)
    M->>G: git clone git@gitrust.example.com:owner/repo.git
    G-->>M: copie locale du dépôt
    M->>M: édite un fichier, git add, git commit
    M->>G: git push origin main
    G-->>W: commit visible dans l'interface

Étape 1 : Génère une clé SSH ed25519

Note : si tu as déjà généré une clé ed25519 pendant le tutoriel 01, passe directement à l'étape 2.

Dans ton terminal, lance la commande suivante (remplace l'adresse e-mail par la tienne) :

ssh-keygen -t ed25519 -C "ton@email.com"

Sortie attendue :

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/toi/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/toi/.ssh/id_ed25519
Your public key has been saved in /home/toi/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXx ton@email.com
The key's randomart image is:
+--[ED25519 256]--+
|        .o+      |
|        ...      |
+----[SHA256]-----+

Appuie sur Entrée pour accepter le chemin par défaut. Une passphrase est recommandée — elle chiffre la clé privée sur disque.

Affiche ta clé publique (le fichier .pub — celui-là est fait pour être partagé) :

cat ~/.ssh/id_ed25519.pub

Sortie attendue :

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ton@email.com

Copie cette ligne complète dans le presse-papier.

Checkpoint : la ligne commence obligatoirement par ssh-ed25519. Si elle commence par -----BEGIN tu affiches la clé privée par erreur — arrête-toi et relis la commande.


Étape 2 : Déclare la clé dans ton profil gitrust

Dans ton navigateur, va sur Paramètres → Clés SSH (/settings/keys).

Page Clés SSH dans les paramètres

Clique Ajouter une clé SSH. Remplis le formulaire :

  • Titre : un nom qui identifie la machine (ex. laptop-maison-2026)
  • Clé : colle la ligne ssh-ed25519 … copiée à l'étape 1

Clique Enregistrer.

Sortie attendue (bannière verte dans l'interface) :

Clé SSH ajoutée avec succès.

Vérifie la connexion depuis le terminal :

ssh -T git@gitrust.example.com -p 2222

Sortie attendue :

Bonjour tonpseudo ! Vous êtes authentifié, mais gitrust ne fournit pas d'accès shell.

Checkpoint : tu dois obtenir ce message de bienvenue. Si tu obtiens Permission denied (publickey), relis l'encart « Et si ça ne marche pas » en bas de ce tutoriel.


Étape 3 : Récupère l'URL SSH de ton dépôt

Dans ton navigateur, ouvre la page de ton dépôt (/<tonpseudo>/mon-premier-depot).

Sur la page d'accueil du dépôt, clique sur le bouton Cloner (ou Code). Sélectionne l'onglet SSH et copie l'URL affichée.

Elle a la forme :

git@gitrust.example.com:tonpseudo/mon-premier-depot.git

Bouton Cloner avec l'URL SSH sélectionnée

Checkpoint : l'URL SSH commence par git@ (pas par https://). Si tu ne vois pas d'onglet SSH, l'instance n'a pas de serveur SSH configuré — demande à ton administrateur.


Étape 4 : Clone le dépôt en local

Dans ton terminal, place-toi dans le dossier où tu veux stocker tes projets, puis clone :

cd ~/projets
git clone git@gitrust.example.com:tonpseudo/mon-premier-depot.git

Sortie attendue :

Cloning into 'mon-premier-depot'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
Receiving objects: 100% (3/3), done.

Entre dans le dossier cloné :

cd mon-premier-depot
ls

Sortie attendue :

README.md

Checkpoint : le fichier README.md est présent — ton dépôt est bien cloné. Si Git affiche fatal: repository not found, vérifie l'URL SSH copiée à l'étape précédente.


Étape 5 : Crée un fichier, commite et pousse

Crée un nouveau fichier dans le dépôt :

echo "# Notes de développement" > NOTES.md

Ajoute-le à l'index Git et crée un commit :

git add NOTES.md
git commit -m "ajoute NOTES.md"

Sortie attendue :

[main 3a8c21f] ajoute NOTES.md
 1 file changed, 1 insertion(+)
 create mode 100644 NOTES.md

Pousse vers gitrust :

git push origin main

Sortie attendue :

Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 298 bytes | 298.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To git@gitrust.example.com:tonpseudo/mon-premier-depot.git
   a1b2c3d..3a8c21f  main -> main

Checkpoint : la dernière ligne montre main -> main avec deux SHA différents, ce qui confirme que les objets ont bien été envoyés.


Étape 6 : Vérifie dans l'interface web

Retourne dans ton navigateur sur la page du dépôt (/<tonpseudo>/mon-premier-depot). Rafraîchis la page.

Tu dois voir :

  • Le fichier NOTES.md apparaît dans la liste des fichiers
  • La barre de commits affiche 2 commits (le README initial + ton nouveau commit)
  • Le message de commit ajoute NOTES.md est visible à côté du fichier

Page du dépôt après le push, NOTES.md visible

Checkpoint : si le fichier NOTES.md n'est pas visible après rafraîchissement, assure-toi que le git push a bien terminé sans erreur (relis la sortie de l'étape 5).


Récapitulatif

  • O1 accompli : tu as généré une clé SSH ed25519 et vérifié son empreinte SHA256 — elle est enregistrée dans /settings/keys
  • O2 accompli : tu as cloné le dépôt en local avec git clone git@… et obtenu une copie fonctionnelle
  • O3 accompli : tu as poussé un commit avec git push origin main et vérifié sa présence dans l'interface web

Et si ça ne marche pas

Symptôme Cause probable Correction
Permission denied (publickey) au git clone ou git push La clé privée locale ne correspond pas à la clé publique enregistrée sur gitrust, ou l'agent SSH ne la connaît pas Exécute ssh-add ~/.ssh/id_ed25519 pour ajouter la clé à l'agent, puis réessaie. Vérifie aussi que la bonne clé .pub a été copiée dans gitrust
Host key verification failed L'empreinte SSH du serveur gitrust a changé ou est inconnue Exécute ssh-keyscan -p 2222 gitrust.example.com >> ~/.ssh/known_hosts, puis réessaie. En environnement de test, tu peux vérifier l'empreinte avec l'administrateur
fatal: repository 'git@…' not found L'URL SSH est incorrecte, ou le dépôt n'existe pas (typo dans le nom), ou tu n'as pas les droits Vérifie l'URL sur la page web du dépôt. Assure-toi que le dépôt est bien accessible avec ton compte
error: failed to push some refs / rejected La branche distante contient des commits que tu n'as pas en local Exécute git pull origin main --rebase d'abord, résous les conflits éventuels, puis git push à nouveau

Prochaine étape

03 — Collaborer : équipes, issues et pull requests : crée une équipe, invite un coéquipier, ouvre une issue et ta première pull request (~25 min)