{"id":13605680,"url":"https://github.com/SocialGouv/tutoriel-gitlab","last_synced_at":"2025-04-12T05:34:10.704Z","repository":{"id":50538401,"uuid":"122996996","full_name":"SocialGouv/tutoriel-gitlab","owner":"SocialGouv","description":"Tutoriel GitLab en Français","archived":false,"fork":false,"pushed_at":"2024-09-03T17:33:54.000Z","size":1627,"stargazers_count":45,"open_issues_count":6,"forks_count":152,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-10T02:50:56.046Z","etag":null,"topics":["francais","git","gitlab","tutorial","tutoriel"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SocialGouv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-26T16:28:24.000Z","updated_at":"2025-02-24T15:32:27.000Z","dependencies_parsed_at":"2025-02-01T08:11:16.919Z","dependency_job_id":"d645acd8-71a8-42e7-adf6-869f7dae2276","html_url":"https://github.com/SocialGouv/tutoriel-gitlab","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SocialGouv%2Ftutoriel-gitlab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SocialGouv%2Ftutoriel-gitlab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SocialGouv%2Ftutoriel-gitlab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SocialGouv%2Ftutoriel-gitlab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SocialGouv","download_url":"https://codeload.github.com/SocialGouv/tutoriel-gitlab/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248524604,"owners_count":21118612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["francais","git","gitlab","tutorial","tutoriel"],"created_at":"2024-08-01T19:01:01.528Z","updated_at":"2025-04-12T05:34:10.657Z","avatar_url":"https://github.com/SocialGouv.png","language":null,"readme":"# Tutoriel GitLab ![Work in progress](http://www.repostatus.org/badges/latest/wip.svg)\r\n\r\nCe guide collaboratif à l'ambition de vous donner les bases essentielles pour bien démarrer sur [GitLab](http://gitlab.org).\r\n\r\n[GitLab](http://gitlab.org) peut être utilisé en tant que [SAAS](https://fr.wikipedia.org/wiki/Logiciel_en_tant_que_service), ou être installé sur votre propre instance privée.\r\n\r\n\u003e NB: les traductions FR des interfaces ne sont pas toujours complètes.\r\n\r\n## Sommaire\r\n\r\n - [Qu'est-ce que c'est, à quoi ça sert ?](#quest-ce-que-cest-%C3%A0-quoi-%C3%A7a-sert-)\r\n - [Comment fonctionne GIT](#comment-fonctionne-git)\r\n - [Sécurité](#sécurité)\r\n - [Inscription GitLab](#inscription)\r\n - [Créer un projet](#créer-un-projet)\r\n - [Fourcher (forker) un projet](#fourcher-forker-un-projet)\r\n - [Gestion des fichiers](#gestion-des-fichiers)\r\n - [Demandes de fusion](#demandes-de-fusion)\r\n - [Le format Markdown](#am%C3%A9liorer-ses-textes-avec-le-format-markdown)\r\n - [Gestion des issues](#les-issues)\r\n - [GitLab : Mirroring avec GitHub](#gitlab--mirroring-avec-github)\r\n - [FAQ](#faq)\r\n - [Liens](#liens)\r\n - [Glossaire](#glossaire)\r\n\r\n## Qu'est-ce que c'est, à quoi ça sert ?\r\n\r\n**GIT** est un système de gestion de versions, qui permet de stocker de manière optimisée et sécurisée des fichiers **et** toutes leurs modifications dans le temps.\r\n\r\n**GIT** est décentralisé, et permet à de multiples personnes de travailler ensemble sur le même projet, puis d'intégrer harmonieusement les travaux de chacun.\r\n\r\nC'est un outil bas niveau (ligne de commande), mais on peut l'utiliser via des logiciels comme GitKraken par exemple.\r\n\r\nDes sites webs comme GitHub ou GitLab (qui sont des \"forges logicielles\"), ajoutent à GIT des fonctionnalités telles que la gestion des \"tickets\" (issues), les releases, la documentation, l'intégration continue ou encore le déploiement automatisé, qui facilitent la collaboration, et en font une composante centrale pour atteindre l'agilité et les pratiques **DevOps**.\r\n\r\n**GitHub**, c'est le site web (SAAS) qui a démocratisé l'usage de GIT, en lui ajoutant une surcouche web minimaliste mais permettant une collaboration facilitée. Il est devenu **LA référence** des développeurs pour tous les projets open-source populaires. Il fédère plus de 25 millions d'utilisateurs dans le monde qui collaborent tous les jours sur cette plateforme. https://fr.wikipedia.org/wiki/GitHub\r\n\r\n**GitLab**, c'est une alternative open-source, idéale pour des usages privés ou plus avancés, et qui propose beaucoup plus de fonctionnalités. Le projet est financé par de nombreuses entreprises (dont Google Ventures) et est proposé en version CE : Community edition (gratuite) ou Entreprise pour bénéficier de fonctionnalité très avancées et de support. https://fr.wikipedia.org/wiki/GitLab_CE\r\n\r\nUn [glossaire](#glossaire) est disponible à la fin de ce document\r\n\r\n\r\n## Comment fonctionne GIT\r\n\r\nGIT maintient dans votre projet des fichiers d'index qui stockent chaque modification de fichier, ainsi qu'un lien vers la version précédente.\r\n\r\nAinsi, à chaque \"commit\" (modification de fichier(s)), vous enregistrez les nouvelles modification dans l'index.\r\n\r\nEt vous pouvez revenir en arrière à tout moment, ou créer des \"branches\" qui vous permettront de travailler en parallèle sur une nouvelle version du fichier.\r\n\r\n[![https://www.atlassian.com/git/tutorials/using-branches/git-merge](./images/git-branches.png)](https://www.atlassian.com/git/tutorials/using-branches/git-merge)\r\n\r\nConcrètement, à la racine de votre projet, git maintient un dossier `.git` qui contient les indexes et le fichier de config.\r\n\r\n## Sécurité\r\n\r\nLes autorisations d'accès aux projets sont gérées par les propriétaires des projets dans GitLab.\r\n\r\nVous ne devez pas mettre de mot passe ou donnée sensible dans les projets.\r\n\r\n## Inscription\r\n\r\nVous êtes autonome pour créer un compte sur la plateforme.\r\n\r\nMerci de respecter la convention `prenom.nom` lors de votre enregistrement.\r\n\r\n![register](./images/register.png)\r\n\r\nUne fois votre compte créé, vous pouvez créer des projets comme bon vous semble dans votre espace personnel.\r\n\r\nLe nommage des projets par groupe doivent respecter des conventions de nommage.\r\n\r\n## Créer un projet\r\n\r\nCréer un projet, c'est créer un espace public ou privé ou vous pouvez versionner des fichiers et collaborer.\r\n\r\n![creer depuis menu](./images/create-project1.png)\r\n\r\n![creer depuis accueil](./images/create-project2.png)\r\n\r\nLorsque vous créez un nouveau projet, il peut résider :\r\n\r\n - soit dans votre espace personnel : https://[URL]/prenom.nom/nom-du-projet\r\n - soit dans un groupe existant : https://[URL]/groupe/nom-du-projet\r\n\r\n![options du projet](./images/create-project3.png)\r\n\r\nPlusieurs options de visibilité sont disponibles :\r\n\r\nVisibilité  | Invité\r\n------------|-------\r\nPrivé       | Vous serez le seul à pouvoir accéder au projet et à donner des permissions à l'unité\r\nInterne     | Seuls les utilisateurs authentifiés peuvent voir le projet\r\nPublic      | N'importe qui, même non authentifié peut voir le projet\r\n\r\nUne fois le projet crée, vous pouvez commencer à l'utiliser.\r\n\r\nSi le projet est privé, vous pouvez inviter des utilisateurs à collaborer.\r\n\r\n![options membres](./images/project-members-menu.png)\r\n\r\nVous pouvez inviter des utilisateurs individuellement, ou par groupe.\r\n\r\nRole        | Permissions\r\n------------|---------------\r\nGuest       | Lire et commenter les issues\r\nReporter    | Gérer les issues, voir le code\r\nDeveloper   | Modifier les fichiers, issues\r\nMaster      | Administration du projet\r\n\r\nCf [permissions](#gitlab-les-permissions)\r\n\r\n![options membres](./images/project-members.png)\r\n\r\n### Options du projet\r\n\r\nUn certain nombre d'options permettent de personnaliser le projet\r\n\r\n![options du projet](./images/project-options.png)\r\n\r\nParmi les options réglables, vous pouvez :\r\n\r\n - personnaliser le logo, description, tags du projet\r\n - régler les permissions d'accès\r\n - activer/désactiver les issues/pipelines/wikis/snippets si vous n'en avez pas besoin (cella allège l'affichage)\r\n\r\n### Accueil du projet\r\n\r\nCette page permet d'avoir toutes les informations sur le projet.\r\n\r\nLe fichier `README.md` est automatiqueemnt affiché et doit permettre de comprendre les tenants et les aboutissants du projet, ainsi que les moyens pour installer le projet ou collaborer.\r\n\r\nSi le projet vous intéresse, mettez-le en favori pour le retrouver facilement sur la page d'accueil ou dans le menu\"\r\n\r\n![projet-bookmark](./images/project-bookmark.png)\r\n\r\nExemple de page d'accueil d'un projet GitLab :\r\n\r\n![Accueil du projet](./images/project-home.png)\r\n\r\nL'URL présentée en haut du projet, qui peut-être de type HTTPS ou SSH permet de pouvoir clôner le projet, pour le rappatrier sur sa machine par exemple.\r\n\r\n![URL du projet](./images/project-url.png)\r\n\r\n\r\n## Fourcher (forker) un projet\r\n\r\nPour contribuer à un projet sur lequel nous n'avons pas les droits en écriture, il est d'usage de `fourcher` le projet, d'apporter les modifications (corrections ou améliorations) dans votre propre copie du projet, puis d'envoyer cette contribution en tant que `merge request` au projet original (qu'on appelle `upstream`).\r\n\r\n![Fourcher un projet](./images/project-fork.png)\r\n\r\nVous pouvez `fourcher` un projet depuis la page web du projet, c.a.d. le copier, soit dans votre espace personnel, soit dans un groupe pour lequel vous avez les permissions suffisantes.\r\n\r\nUne fois fourché, vous êtes en possession d'une copie du projet sur laquelle vous pouvez travailler indépendamment puis éventuellement soumettre des contributions utiles au projet d'origine (`upstream`)\r\n\r\n## Gestion des fichiers\r\n\r\nLes fichiers d'un repository peuvent être modifiés de multiples façons :\r\n\r\n - Via le **site web** : facile et rapide\r\n - Via un **logiciel dédié** : permet de travailler sur son poste indépendemmant avant d'envoyer les changements\r\n - Via le **CLI GIT** : permet de comprendre le fonctionnement de GIT et de travailler très précisément\r\n\r\nLes 3 approches sont décrites ci-dessous.\r\n\r\n### Via l'interface web\r\n\r\nGitLab propose une interface web riche d'où il est possible de faire beaucoup de choses :)\r\n\r\nPour créer, envoyer un fichier ou un dossier :\r\n\r\n![projet-ajouter-fichier](./images/project-add-file.png)\r\n\r\nPour modifier un fichier, ouvrez le fichier en cliquant sur son nom, puis cliquez sur \"Edit\"\r\n\r\n![projet-editer-fichier](./images/project-edit-file.png)\r\n\r\nVous accédez alors à un éditeur de texte qui permet de modifier le fichier.\r\n\r\nUne fois le fichier envoyé ou modifié, vous devez le \"commit\", c'est à dire sauvegarder vos changements et les décrire brièvement.\r\n\r\nex: \"doc: mise à jour des informations d'installation\"\r\n\r\n\u003e 💡 Des [conventions de commit](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines) permettent de standardiser les messages et de générer des changelogs.\r\n\r\n\r\n## GitLab : Via un logiciel UI\r\n\r\nOn peut également travailler sur les fichiers directement sur son ordinateur, sans passer par l'interface GitLab.\r\n\r\nPour cela on peut utiliser l'un des nombreux clients GIT du marché. Le plus \"simple\" est [GitHub for desktop](https://desktop.github.com/)\r\n\r\n - On va d'abord cloner le projet (copier en local).\r\n - Puis faire les modifications en local\r\n - Faire un commit\r\n - Envoyer le code sur GitLab (push)\r\n\r\n## GitLab : via le CLI GIT\r\n\r\n\u003e La ligne de commande GIT est cryptique, mais il y a peu de commandes à connaitre; les connaitre vous permettra de mieux comprendre le fonctionnement de GIT pour mieux en tirer profit.\r\n\r\n\u003e 💡 Apprenez le CLI en 5 minutes avec [try.github.io](http://try.github.io)\r\n\r\n### Clé SSH\r\n\r\nPour utiliser le CLI, le plus simple est d'utiliser une clé SSH que vous associer à votre compte GitLab. Ceci permet de ne pas avoir à utiliser les mots de pass via le CLI.\r\n\r\n - générez la clé sur votre poste\r\n   - windows : avec [putty](https://support.google.com/youtube/answer/3071034?hl=fr)\r\n   - mac/linux : `ssh-keygen -t ecdsa -b 256`\r\n     \r\n - ajoutez la clé **publique** dans votre profil GitLab\r\n\r\n\r\n### Clone/Modif de repos\r\n\r\nLes mêmes opération via le CLI (ligne de commandes) :\r\n\r\n - cloner un projet `git clone git@gitlab..aaa.bbb.ccc:/prenom.nom/faq-generale.git`\r\n - Ajouter les fichiers pour le commit `git add question-1.md question-2.md`\r\n - Sauvegarder les modifications : `git commit -m 'ajout de questions'`\r\n - Envoyer sur le serveur GitLab : `git push`\r\n\r\n## Demandes de fusion\r\n\r\nLorsque vous modifiez des fichiers sur un projet qui ne vous appartient pas, vous pouvez soumettre vos changements pour validation au propiétaire du projet.\r\n\r\nCeci permet de faire une revue, à l'issue de laquelle le propriétaire pourra directement intégrer vos changements dans le projet.\r\n\r\n## Améliorer ses textes avec le format markdown\r\n\r\nLe format markdown permet d'enrichir facilement du texte brut. Dans GitLab, on peut écrire du markdown a peu près partout : fichiers `.md`, commentaires, issues...\r\n\r\nCe format est exploitable par de nombreux outils, qui permettent par exemple de générer des sites web.\r\n\r\nDocumentation complète ici : https://fr.wikipedia.org/wiki/Markdown\r\n\r\nQuelques outils pratiques :\r\n\r\n - Un éditeur en ligne : [dillinger.io](http://dillinger.io)\r\n - un tutoriel interactif : https://www.markdowntutorial.com/\r\n - Helper pour générer des tableaux : https://www.tablesgenerator.com/markdown_tables\r\n - Format `mermaid` pour générer des schémas : https://gitlab.com/gitlab-org/gitlab-ce/issues/3711\r\n\r\n## Les issues\r\n\r\nLe système d'issues de GitLab est avancé et puissant !\r\n\r\nVous pouvez créez des catégories (tags), assigner les tâches, les estimer, gérer des roadmaps, ajouter des fichiers, commenter, recevoir des notifications, etc... un lieu idéal pour centraliser les discussions autour d'un projet et favoriser la collaboration transparente.\r\n\r\nPour accéder aux issues du projet :\r\n\r\n![issues-menu](./images/issues-menu.png)\r\n\r\nVous accédez alors à la liste des issues du projet\r\n\r\n![issues-list](./images/issues-list.png)\r\n\r\nPour créer une issue :\r\n\r\n![issues-new](./images/issues-new.png)\r\n\r\nCréer une bonne issue est essentiel pour sa résolution. Chaque issue doit être explicite, avec **un cas reproductible** en cas de remontée de bug. Vous pouvez avoir quelques pistes pour [rédiger un bon rapport de bug ici](http://blogtorop.fr/comment-faire-un-bon-rapport-de-bug/).\r\n\r\n### Agile\r\n\r\nLes issues peuvent être organisées dans des \"boards\" type \"kanban\". Vous pouvez créer vos propres boards pour organiser vos priorités.\r\n\r\n![issues-boards](./images/issues-boards.png)\r\n\r\nLes issues peuvent être groupés par \"milestones\" (sprints). Ceci permet de grouper des tâches pour en suivre la complétion.\r\n\r\n![issues-milestones](./images/issues-milestones.png)\r\n\r\n## GitLab : Les permissions\r\n\r\nLes utilisateurs ont des permissions différentes selon le niveau d'accès qu'ils ont dans un groupe ou un projet particulier.\r\n\r\nSi un utilisateur est à la fois dans le projet d'un groupe et le projet lui-même, le niveau d'autorisation le plus élevé est utilisé.\r\n\r\nQuand on créé un projet, nous en sommes le \"Owner\", et accordons des permissions à d'autres membres si nécéssaire.\r\n\r\n\r\nPermission                  | Invité| Reporter | Developer | Master | Owner\r\n----------------------------|:-----:|:--------:|:---------:|:------:|:------:\r\nIssues                      |   ✔   |     ✔    |     ✔     |   ✔    |   ✔   |\r\nGérer les issues            |   ⨯   |     ✔    |     ✔     |   ✔    |   ✔   |\r\nEffacer une issue           |   ⨯   |     ⨯    |     ⨯     |   ⨯    |   ✔   |\r\nLire le wiki                |   ✔   |     ✔    |     ✔     |   ✔    |   ✔   |\r\nEditer le wiki              |   ⨯   |     ⨯    |     ✔     |   ✔    |   ✔   |\r\nCommenter                   |   ✔   |     ✔    |     ✔     |   ✔    |   ✔   |\r\nEdit un commentaire         |   ⨯   |     ⨯    |     ⨯     |   ✔    |   ✔   |\r\nLire le code                |   ⨯   |     ✔    |     ✔     |   ✔    |   ✔   |\r\nContribuer (merge request)  |   ⨯   |     ⨯    |     ✔     |   ✔    |   ✔   |\r\ngit push                    |   ⨯   |     ⨯    |     ✔     |   ✔    |   ✔   |\r\nGérer l'équipe projet       |   ⨯   |     ⨯    |     ⨯     |   ✔    |   ✔   |\r\nConfigurer les pages projet |   ⨯   |     ⨯    |     ⨯     |   ✔    |   ✔   |\r\nCréer un projet dans groupe |   ⨯   |     ⨯    |     ⨯     |   ✔    |   ✔   |\r\nTransférer un projet        |   ⨯   |     ⨯    |     ⨯     |   ⨯    |   ✔   |\r\nEffacer un project          |   ⨯   |     ⨯    |     ⨯     |   ⨯    |   ✔   |\r\nVoir les jobs               |   ✔   |     ✔    |     ✔     |   ✔    |   ✔   |\r\nConfigurer les hooks        |   ⨯   |     ⨯    |     ⨯     |   ✔    |   ✔   |\r\nVoir les environments       |   ⨯   |     ✔    |     ✔     |   ✔    |   ✔   |\r\nCréer un environment        |   ⨯   |     ⨯    |     ✔     |   ✔    |   ✔   |\r\n\r\ncf [documentation officielle](https://docs.gitlab.com/ee/user/permissions.html#project-members-permissions)\r\n\r\n\r\n## GitLab : Gestion de projet (boards)\r\n\r\n[todo]\r\n\r\n## GitLab : Publier du contenu avec GitLab pages\r\n\r\n[todo]\r\n\r\n## GitLab : Mirroring avec GitHub\r\nGitlab offre la synchronisation en PUSH vers Github à tous les utilisateurs tandis que la synchronisation en GET est réservée aux comptes Gitlab PREMIUM (payant).\r\n\r\n1.Clonage d'un repo Github dans Gitlab\r\n\r\nGitlab propose de créer un repo en créant un clône d'un repo pré-existant sur un autre service via \"Importer un projet\". Il suffit de fournir l'URL du repo Github.\r\n\r\n![Capture de la page de proposition des modalités de création de repo Gitlab](./images/gitlab-clonage1.png \"Clonage d'un repo pré-existant\")\r\n\r\nL'interface demande ensuite de remplir des champs : \r\n- le nom d'utilisateur correspond au nom d'utilisateur du repo distant Github\r\n- le mot de passe correspond à un token d'accès personnel que nous devons générer depuis https://github.com/settings/tokens pour autoriser Gitlab à tirer depuis notre compte Github\r\n- cocher la case \"Dépôt miroir\"\r\n\r\n![Capture des Champs demandés par Gitlab pour autoriser le clonage du projet](./images/gitlab-clonage2.png \"Champs demandés par Gitlab pour autoriser le clonage du projet\")\r\n\r\n2.Pousser le repo Gitlab vers Github\r\n\r\nLa poussée des modifications vers le dépôt Github comprend Les branches, les étiquettes et les commits.\r\n\r\nPour cela il faut se rendre dans le repo Gitlab -\u003e Paramètres -\u003e Dépôt -\u003e Dépôts miroirs.\r\nIl faut de nouveau coller l'url du dépôt distant Github et placer le nom d'utilisateur Github. Le champ \"mot de passe\" correspond au token généré précédemment sur Github.\r\n\r\n![Capture des champs requis pour synchroniser](./images/gitlab-synchronisation.png \"Champs requis pour synchroniser\")\r\n\r\nN'importe quel commit effectué sera poussé depuis Gitlab vers Github.\r\n\r\n## GitLab : Intégration continue\r\n\r\n[todo]\r\n\r\n\r\n## FAQ\r\n\r\n### Clé SSH\r\n\r\n[todo]\r\n\r\n## Liens\r\n\r\n - [L'art de faire des commits atomiques](http://adopteungit.fr/methodologie/2017/04/26/commits-atomiques-la-bonne-approche.html)\r\n - [L'art de faire des issues efficaces](https://www.lesintegristes.net/2011/10/19/rediger-un-rapport-de-bugs-ca-na-pas-lair-pas-mais-cest-du-boulot/)\r\n\r\n## Glossaire\r\n - **intégration continue** : pratique qui consiste à vérifier chaque modification du code source pour prévenir les régressions.  Le principal but de cette pratique est de détecter les problèmes d'intégration au plus tôt lors du développement. De plus, elle permet d'automatiser l'exécution des suites de tests et de voir l'évolution du développement du logiciel.\r\n - **devops** : mouvement visant à l'alignement de l'ensemble des équipes du système d'information sur un objectif commun, à commencer par les équipes de dev ou dev engineers chargés de faire évoluer le système d'information et les ops ou ops engineers responsables des infrastructures.\r\n - **commit** :  Fait d'enregistrer dans un outil de gestion de versions une nouvelle version d'un ensemble de fichiers.\r\n - **release** : version fixée d'une réalisation\r\n - **issue** : Un ticket qui permet de définir une feature ou un bug.\r\n - **repository** : Un projet au sens GIT\r\n - **origin** : GIT étant décentralisé, `origin` est le nom conventionnel du serveur par défaut\r\n - **upstream** : Lorsque l'on copie (fork) un projet, `upstream` représente le repository d'origine par convention\r\n - **fourcher/forker** : copier intégralement un repository\r\n","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSocialGouv%2Ftutoriel-gitlab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSocialGouv%2Ftutoriel-gitlab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSocialGouv%2Ftutoriel-gitlab/lists"}