Fork me on GitHub
… ou une occasion d’apprendre

GitHub, vos dépôts distants pour Git

Posté le 7 mai 2008 à 17:41

Cet article fait suite à mon introduction à Git, si vous ne connaissez pas ce système de gestion de source, je vous conseille de la lire en premier.

Mon premier article expliquait comment créer un dépôt local, ce qui n’est naturellement pas suffisant pour travailler en collaboration avec d’autres personnes. Git est un système de gestion de sources décentralisé, il est assez simple de créer un dépôt distant afin de partager votre travail, que ce soit sur un de vos serveurs où en utilisant un service d’hébergement. GitHub (mon compte) est donc un de service offrant la possibilité d’héberger un dépôt distant pour vos projets agrémenter de fonctionnalités supplémentaires. Il existe bien entendu une version gratuite qui vous permettra de créer des projets publics dans un espace limité à 100 Mo, des plans payants (dès 7$ par mois) permettent d’augmenter cet espace mais également de bénéficier de dépôts privés (indispensable pour les entreprises il va de soit). Il est bien entendu possible de donner des accès en écriture aux dépôts publics et privés à d’autres comptes (qu’ils soient payants ou non) .

Le service vous crée une page de profile simple où vous pouvez afficher votre nom, email, entreprise, localisation et site internet. Cette page affichera également votre activité (commit, ajout de suivi, …) et vos dépôts. Vous pouvez également décider de recevoir les mises à jour (commit, comment) concernant un projet ou une personne, elles seront affichées sur votre page d’accueil avec la liste des projets afin d’y accéder plus rapidement. Vous avez également accès à un système de messagerie et de recherche de projet.

Les pages d’un projet commencent par une série d’onglet permettant de parcourir les sources (page par défaut), d’accéder à la liste des commits, un wiki, le network (voir ci-dessous), a la liste des watchers (personnes suivants le projet) et enfin, si vous êtes le propriétaire, un accès à l’administration. Une seconde série d’onglets donne accès au menu de la section (liste des branches et tags par exemple). On trouve ensuite boite contenant les informations de base sur le projet, celle-ci est présente sur toutes les pages et contient le nom du propriétaire et du projet, une série de bouton d’action (dont fork et pull request que nous verrons plus loin, ainsi que watch et download qui permet de télécharger une archive de la branche sur laquelle vous êtes). Suis une description, l’adresse du site du projet et enfin les adresse Git (public clone, private clone, push).

L’explorateur des sources est classique, mais bien réalisé, notez tout de même que si un fichier README est présent à la racine, il sera affiché sur la première page en dessous de l’arborescence et que si celui-ci à une extension du type rdoc par exemple, le contenu sera formaté. Il est aussi possible de laisser un commentaire sur un commit en particulier.

Revenons sur ce qui fait la force d’un système décentralisé et plus particulièrement sur son intégration dans GitHub qui en facilite et favorise grandement l’utilisation. Le bouton fork permet de créer un clone du projet dans votre compte (un peu comme si vous utilisiez la commande git clone en locale), vous allez donc pouvoir travailler sur votre propre branche d’un projet et en publier les modifications dans votre espace public très facilement. Quand vous faites ceci vous entrez dans le network du projet et c’est là que GitHub est également intéressant puisqu’il permet de retrouver les branches d’un projet maintenu par d’autres personnes assez facilement. Vous pouvez ensuite utiliser depuis votre dépôt (ou un commit en particulier) le bouton pull request afin de proposer au mainteneur de la branche d’origine (ou d’autres branches éventuellement) d’intégrer vos modifications. Précisons également que si vous faites un fork d’un projet privé auquel vous avez accès, il sera également privé chez vous et ceci sans que vous ayez besoin d’un compte payant.

C’est probablement ici qu’on sent la force de Git et de GitHub, en favorisant la collaboration et la participation.

Concrètement, comment mettre mon projet sur GitHub ?

Pour commencer il va vous falloir une clef ssh afin de vous connecter aux projets auxquels vous avez accès. Attention, une clef ne peut être utilisée que par une seule personne, c’est elle qui vous identifies en plus de vous authentifier. Je rappelle également que dans Git les commit sont signés par un nom et une adresse email et c’est grâce à celle-ci que vos commits seront liés à votre profil.

Pour créer une clef (avec MSysGit sous Windows le fonctionnement est le même que sous Linux, je ne fais donc aucune distinction dans la suite de l’article).

$ ssh-keygen -C yann.lugrin@... -t rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
c0:0c:27:7e:4b:c9:0d:f7:14:c2:de:78:54:0e:32:bb yann.lugrin@...

La passphrase est importante afin de protéger votre clef privée, si vous n’en mettez pas et qu’elle est utilisée par quelqu’un d’autre il pourra se connecter sans problème à votre compte. Voici à quoi ressemble une clef publique (il n’y a pas de retour à la ligne en réalité) :

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1x36C/Aur4KYHAL6I2m3FRoc3ixPFO/+9+ITyeM3FdCP
zPJ5fyMyNy+vkZm9zpbCsxjVGAjCSpYfQ4ins+U3CVMgAJnpNLtTri9f5EswkwSTGNhFomwuGb1RZOeg
ZPX/oveY2qylS+aOBY8/W2sICTOKsVDTWShc3P/bAtLxxPq3VdX73x70cRW1yVPthRPcci4QRWMFkyCY
TLrmH8C7I2KGffU7NUm1RzW9ym34TapZI5UKRq3jCx3kmiUjYVyf1Qqo9Dk5Xn855Uvk0/CAZnITQsfP
mhMYwLcp7K2zD9WbnljTtVO3PDRU4HaXQOPR7gcgNTN/xMuZruEZUGPDnw== yann.lugrin@...

Maintenant vous pouvez créer un compte sur GitHub, votre username sera utilisé pour identifier votre profil et votre compte (il sert donc de préfixe à vos projets en quelque sorte). Comme je vous l’ai déjà dit votre adresse email permet de lier vos commits à votre profil (vous pourrez en ajouter d’autres plus tard si besoin) et enfin dans le champ SSH Public Key vous pouvez entrer le contenu du fichier id_rsa.pub (vous pouvez aussi en ajouter d’autres plus tard).

Créer un nouveau projet est simple, suivez le lien qui se trouve sur la droite de la page d’accueil une fois que vous êtes connecté. Donnez un nom à votre projet et éventuellement une description et l’adresse d’un site. Vous pouvez également définir s’il est public ou privé (si vous en avez le droit naturellement). La page suivante vous explique comment envoyer votre travail sur GitHub. Parant du principe que vous avez déjà un dépôt local, avec une console, allez dans le répertoire de celui-ci et en utilisant les informations données sur GitHub tapez les commandes suivantes :

$ git remote add origin git@github.com:yannlugrin/test.git
$ git push origin master
Enter passphrase for key '/home/yann/.ssh/id_rsa':
updating 'refs/heads/master'
  from 0000000000000000000000000000000000000000
  to   5ef08e8fc190c49a73a0eb246255b454a8a0f56b
 Also local refs/remotes/origin/master
Generating pack...
Counting objects: 26
Done counting 407 objects.
Deltifying 407 objects...
 100% (407/407) done
Writing 407 objects...
 100% (407/407) done
Total 407 (delta 192), reused 0 (delta 0)
refs/heads/master: 0000000000000000000000000000000000000000 -> 5ef08e8fc190c49a73a0eb246255b454a8a0f56b

La passphrase de votre clef vous sera demandée et vos précédents commits seront transmis vers votre dépôt sur GitHub, vous pouvez maintenant accéder à votre projet et y voir vos fichiers.

Pour créer un clone de votre projet en local (par exemple lors du fork d’un autre projet) vous pouvez utiliser la commande suivante :

$ git clone git@github.com:yannlugrin/test.git

ou pour un projet dont vous n’avez pas d’accès en écriture :

$ git clone git://github.com/yannlugrin/test.git

Vous pouvez maintenant continuer à travailler sur votre dépôt local, faire vos commits et régulièrement utiliser la commande git push pour mettre à jour GitHub ou git pull pour mettre à jour votre dépôt local.

$ git push origin
$ git pull origin master

Articles relatifs





2 Responses to “GitHub, vos dépôts distants pour Git”

  1. Hobbestigrou » Blog Archive » Découverte de Git.

    [...] Git Une comparaison de Git vs SVN Une autre manière d’utiliser Git Utiliser Git avec Github Un tutorial Git Un autre tutorial Un dernier pour la route un logiciel de gestion de versions [...]

  2. Hobbestigrou » Blog Archive » Dévouverte de Git

    [...] sur wikipedia Découvrir Git Une comparaison de Git vs SVN Une autre manière d’utiliser Git Utiliser Git avec Github Un tutorial Git Un autre tutorial Un dernier pour la route un logiciel de gestion de versions [...]

Envoyer une réponse

Ce site supporte OpenID, vous pouvez vous authentifier en entrant votre identité dans le champ adéquat mais ceci n'est pas obligatoire.

Si vous ne vous authentifiez pas avec OpenID le nom et l'email sont requis. Si vous vous authentifiez pour la première fois, les renseigner permet de vous assurer des informations qui seront associées à votre profile (si il existe déjà elles seront mises à jour).