Publier et synchroniser avec GitHub

Page 6 sur 10. Créer un dépôt distant, s’authentifier et maîtriser clone, fetch, pull et push.

1. Créer le dépôt GitHub d’exercice

Connectez-vous à votre compte GitHub et créez un dépôt nommé nkl-portail-lab. Choisissez sa visibilité selon le contenu à partager. Pour publier le laboratoire local déjà initialisé, partez d’un dépôt distant vide : n’ajoutez pas en parallèle un README, une licence ou un .gitignore dans l’assistant de création.

Si le dépôt GitHub possède déjà un historique, le plus simple est souvent de le cloner et d’y ajouter vos fichiers. Initialiser deux projets indépendants puis forcer leur réunion complique inutilement le premier exercice.

Le cours montre comment effectuer ces actions dans votre compte. Il ne crée pas automatiquement de dépôt ni ne publie de fichiers sur GitHub.

2. Choisir une authentification

En HTTPS, utilisez un gestionnaire d’identifiants compatible ou la procédure d’authentification proposée pour votre environnement. Selon la configuration, elle peut ouvrir le navigateur. Pour un accès Git nécessitant un jeton personnel, utilisez un jeton adapté, limité aux dépôts et permissions nécessaires ; les règles d’une organisation peuvent imposer des étapes supplémentaires.

Le mot de passe habituel du compte n’est pas le mécanisme à fournir pour les opérations Git en HTTPS sur GitHub. Ne placez jamais un jeton dans l’URL d’un dépôt ni dans un exemple enregistré dans le README.

En SSH, vous ajoutez la clé publique à GitHub et conservez la clé privée sur votre machine. Vérifiez d’abord si une clé adaptée existe ; ne l’écrasez pas par automatisme. Le test suivant vérifie le dialogue SSH après configuration :

ssh -T git@github.com

Lors de la première connexion, comparez l’empreinte du serveur aux empreintes officielles de GitHub. Le message de succès précise que GitHub ne fournit pas de shell ; une sortie non nulle de ce test ne doit donc pas être interprétée seule comme un échec d’authentification.

3. Relier puis envoyer le laboratoire

git remote add origin https://github.com/VOTRE_COMPTE/nkl-portail-lab.git
git remote -v
git push -u origin main

Remplacez VOTRE_COMPTE par votre identifiant. remote add enregistre une adresse ; il n’envoie encore aucun commit. push propose la mise à jour de main sur le distant. L’option -u configure la relation de suivi utilisée par certaines commandes futures.

Si origin existe déjà, inspectez son adresse au lieu de l’ajouter une seconde fois. git remote set-url origin ADRESSE permet de corriger cette configuration lorsque vous avez confirmé la bonne destination.

Après l’envoi, vérifiez les fichiers et le dernier commit sur GitHub. Les modifications non commitées et les fichiers ignorés ne sont pas publiés par push.

Fetch actualise la référence locale de suivi origin/main. Main local ne change pas automatiquement par ce seul fetch. Push propose la mise à jour de la branche hébergée.
Fetch actualise la référence locale de suivi origin/main. Main local ne change pas automatiquement par ce seul fetch. Push propose la mise à jour de la branche hébergée. Cliquer pour agrandir.

4. Cloner et comprendre origin/main

git clone https://github.com/VOTRE_COMPTE/nkl-portail-lab.git nkl-portail-collegue
cd nkl-portail-collegue
git remote -v
git branch -a
git status -sb

Un clone ordinaire prépare un autre dossier de travail et un dépôt local. origin/main est une référence locale de suivi distant : elle représente la dernière connaissance récupérée de main sur origin. Elle n’interroge pas en direct les changements de vos collègues à chaque affichage.

La branche locale main et la référence origin/main peuvent donc pointer vers des commits différents. Un fetch actualise la connaissance du distant ; il ne fusionne pas automatiquement cette connaissance dans votre branche de travail.

5. Fetch, pull et push : trois intentions

CommandeIntentionEffet à comprendre
git fetch originRécupérerActualise les références de suivi sans intégrer dans la branche courante
git pull --ff-onlyRécupérer puis intégrer par avance rapideRefuse une intégration qui demanderait de résoudre une divergence
git pushEnvoyerPropose des mises à jour de références sur le distant
git switch main
git status
git fetch origin
git log --oneline --graph --decorate --all
git pull --ff-only

Dans cette routine, main doit suivre origin/main. Le fetch préalable est utile pour inspecter avant l’intégration, même si pull effectue lui-même une récupération. Si ff-only refuse, regardez les commits propres à chaque côté et choisissez consciemment la suite.

Pour publier une nouvelle branche de fonctionnalité : git push -u origin feature/contact, à condition que cette branche locale existe. Envoyer une branche ne crée pas automatiquement une pull request.

6. Interpréter les erreurs fréquentes

Permission denied peut signaler une clé SSH non reconnue ou un accès manquant. Repository not found peut correspondre à une URL incorrecte ou à un dépôt privé auquel le compte n’a pas accès. src refspec main does not match any invite notamment à vérifier l’existence de main et d’au moins un commit.

Pour un rejet non-fast-forward, récupérez les changements puis inspectez la divergence. Pour un dépôt protégé, suivez le chemin prévu par l’équipe, souvent une pull request. Changer les permissions ou forcer un envoi sans comprendre le refus ne résout pas le problème de collaboration.

Exercices corrigés

Exercice 1 - Fetch ou pull ?

Vous voulez examiner les changements distants avant de les intégrer. Quelle commande commencer ?

Voir le corrigé détaillé

git fetch origin, puis lire le graphe et comparer les références. Fetch ne fusionne pas automatiquement ces changements dans la branche de travail.

Exercice 2 - Refus d’envoi

Push est rejeté parce que main distant a avancé. Quelle première réaction ?

Voir le corrigé détaillé

Récupérer puis inspecter la divergence, vérifier la branche et choisir une fusion ou un rebase approprié. Ne pas forcer automatiquement.

Exercice 3 - Clé à partager

Quelle partie d’une paire SSH ajoute-t-on à GitHub ?

Voir le corrigé détaillé

La clé publique. La clé privée reste sur la machine, protégée selon la configuration retenue. Il faut aussi vérifier l’empreinte du serveur lors de la première connexion.

Avant de passer à la suite

Je distingue main, origin/main et le dépôt GitHub, ainsi que fetch, pull et push.

Pour approfondir

Sources officielles consultées pour ce chapitre : Authentification GitHub, Connexion SSH, git fetch, git push. Cours et schémas originaux ; exemples NKILItech pédagogiques. Vérification documentaire : 28 octobre 2026.