Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

c’est quoi ?

jusqu’ici on a vu le socle de git

mais on n’a encore rien dit sur github (ou gitlab ou bitbucket...) qui est un service qui va au delà du système git à proprement parler

pour ajouter une dimension sociale et offrir des possibilités de collaboration avec .. la terre entière !

les noms

les accès

le workflow usuel

Alice publie du code

dans un scénario typique:

  1. Alice commence à écrire un bout de code - appelons-le rhubarbe - sur son ordi
    tout au long du codage, elle le met dans un repo git

  2. lorsqu’elle est contente elle va “mettre cela sur github”
    c’est-à-dire créer un repo vide dans https://github.com/alice/rhubarbe
    et pousser son repo dedans voyez aussi plus bas

  3. son travail devient donc accessible à tout le monde, et Bob le remarque

  4. il télécharge alors le contenu du repo sur son ordi avec un git clone

d’autres gens s’en servent: les Issues

  1. les gens qui utilisent le logiciel ont à leur disposition (dans le repo d’Alice) un espace qui s’appelle Issues

  2. dans lequel ils peuvent remercier Alice, poser des questions, signaler des soucis
    et de manière générale discuter librement autour du projet
    c’est le premier outil de la dimension sociale de ces plateformes collaboratives
    ça se passerait dans https://github.com/alice/rhubarbe/issues

Bob modifie le code pour ses besoins

  1. à ce stade Bob a tout sur son ordi, il peut modifier ce qu’il veut...

  2. toujours en utilisant git bien sûr, il n’a pas besoin de l’avis ni de l’autorisation d’Alice pour créer des commits, c’est tout de même son ordi

Bob veut soumettre ses changements à Alice : le Fork

  1. là par contre ça se corse un peu
    il faut prendre en compte le fait que, si ça se trouve, Alice n’a jamais entendu parler de Bob et ignore même jusqu’à son existence !
    du coup, pour commencer, Bob ne fait pas partie des gens qui ont le droit de modifier le repo d’Alice

  2. pour contourner ça, et pour pouvoir a minima exposer son idée à Alice, Bob va se créer un fork
    un fork, c’est tout simplement, encore un clone du repo, mais cette fois dans l’espace de Bob,
    donc dans https://github.com/bob/rhubarbe

  3. et la différence c’est que cette fois, Bob a le droit d’écrire dans ce fork il peut donc pousser ses nouveaux commits dans ce fork repo

Bob veut soumettre ses changements à Alice : le PR

  1. mais ça n’est pas exactement suffisant, car à ce stade Alice n’a toujours aucune connaissance de l’existence de Bob, ni a fortiori de nouveaux commits

  2. pour se manifester, Bob va créer ce qu’on appelle un PR (pour Pull Request) qui se trouvent ici https://github.com/alice/rhubarbe/pulls

  3. ce PR est créé dans le repo d’Alice en indiquant
    ○ où se trouvent les changements proposés (typiquement en indiquant le fork de Bob, et accessoirement dans quelle branche)
    ○ et la branche dans le repo d’Alice où on propose de merger les nouveaux commits

  4. dans ce PR va se nouer une discussion entre les deux protagonistes Alice peut soit refuser complètement, soit accepter tel quel, ou bien le plus souvent demander quelques modifications

  5. pendant cette discussion Bob continue à écrire dans son repo, pour tenir compte des demandes d’Alice

  6. enfin, si/quand on arrive à un accord, Alice peut en un clic merger les changements de Bob dans son propre repo

  7. du coup les modifications de Bob profitent à tout le monde
    et Bob n’a plus besoin de s’embêter à gérer sa version custom de rhubarbe
    et là Bob est très content 🙂

  8. et Alice aussi 🙂
    parce que d’autres peuvent de cette manière la décharger de certains aspects du projet

quelques indices sur l’UI de github

créer un repo sur github: avec ou sans fichiers ?

pour créer un fork

il faut aller dans la page du repo sur github, et cliquer sur le bouton Fork en haut à droite

pour inviter des gens dans un repo

passer par l’onglet Settings comme ceci

gh (avancés)

enfin pour les avancés, sachez que toutes les opérations que l’on fait depuis l’interface web peuvent aussi être faits par la ligne de commande en utilisant un outil qui s’appelle gh
voici par exemple comment je crée un repo pour le TP “class-ids” de mon groupe

$ gh repo create --public ue12-p25/git-tp-class-ids-groupe4
✓ Created repository ue12-p25/git-tp-class-ids-groupe4 on GitHub