Collaboration avec GitHub-GitLab
Les deux plateformes sont construites autour de Git et offrent des fonctionnalités similaires.
Progression
7 / 8
Derniere mise a jour
27 nov. 2025
Etat
Nouveau
GitHub vs GitLab : différences principales
Les deux plateformes sont construites autour de Git et offrent des fonctionnalités similaires.
| Critère | GitHub | GitLab |
|---|---|---|
| Popularité | 100+ millions d'utilisateurs (2025) | Large communauté, focus entreprise |
| Hébergement | Cloud (github.com) | Cloud + auto-hébergé |
| CI/CD | GitHub Actions (intégré) | GitLab CI/CD (très complet) |
| Gratuit | Oui, avec repos publics/privés | Oui, fonctionnalités DevOps incluses |
| Terminologie | Pull Request | Merge Request |
| Open-source | Non (propriétaire Microsoft) | Oui (édition Community) |
| Best for | Projets open-source, communauté | DevOps complet, entreprises |
Similarités :
- Gestion de repositories Git
- Revue de code (Pull/Merge Requests)
- Issues et project boards
- Wiki et documentation
- API complètes
Créer un compte
GitHub
- Allez sur github.com
- Cliquez sur "Sign up"
- Entrez email, mot de passe, nom d'utilisateur
- Vérifiez votre email
- Choisissez le plan gratuit
GitLab
- Allez sur gitlab.com
- Cliquez sur "Register"
- Entrez nom, nom d'utilisateur, email, mot de passe
- Vérifiez votre email
Créer un repository distant
Sur GitHub
- Connectez-vous à GitHub
- Cliquez sur le bouton "+" en haut à droite → "New repository"
- Remplissez les informations :
- Repository name : nom du projet
- Description : (optionnel) description courte
- Public/Private : visibilité du repo
- Initialize repository : cochez "Add a README file" si nouveau projet
- Cliquez sur "Create repository"
Sur GitLab
- Connectez-vous à GitLab
- Cliquez sur "New project" → "Create blank project"
- Remplissez :
- Project name
- Visibility Level (Private/Internal/Public)
- Cochez "Initialize repository with a README" si nécessaire
- Cliquez sur "Create project"
Lier un repository local à un remote
Ajouter un remote
# Voir les remotes configurés
git remote -v
# Ajouter un remote nommé 'origin'
git remote add origin https://github.com/username/mon-projet.git
# Pour GitLab
git remote add origin https://gitlab.com/username/mon-projet.gitVérifier :
git remote -vSortie :
origin https://github.com/username/mon-projet.git (fetch)
origin https://github.com/username/mon-projet.git (push)
Renommer un remote
git remote rename origin nouveau-nomSupprimer un remote
git remote remove originPush : envoyer vos commits
git push
Envoie vos commits locaux vers le repository distant.
# Premier push : définir le remote par défaut
git push -u origin main
# Pushs suivants
git pushExplication :
-u(ou--set-upstream) : définitorigin maincomme branche de suivi par défautorigin: nom du remotemain: nom de la branche
Push d'une nouvelle branche
git switch -c feature/nouvelle-feature
git add .
git commit -m "feat: nouvelle fonctionnalité"
git push -u origin feature/nouvelle-featureForcer un push (⚠️ dangereux)
git push --force
# ou version plus sûre
git push --force-with-leasePull : récupérer les modifications
git pull
Récupère et fusionne les changements du remote.
# Récupérer les changements de la branche actuelle
git pull
# Équivalent à :
git fetch
git merge origin/maingit fetch
Télécharge les changements sans les fusionner.
# Télécharger tous les changements
git fetch
# Télécharger d'un remote spécifique
git fetch origin
# Voir les changements téléchargés
git log main..origin/mainWorkflow recommandé :
# 1. Télécharger les changements
git fetch
# 2. Voir les différences
git log main..origin/main
git diff main origin/main
# 3. Fusionner si tout est ok
git merge origin/mainCloner un repository existant
git clone
Télécharge une copie complète d'un repository distant.
# Cloner via HTTPS
git clone https://github.com/username/projet.git
# Cloner via SSH (nécessite configuration SSH)
git clone git@github.com:username/projet.git
# Cloner dans un dossier spécifique
git clone https://github.com/username/projet.git mon-dossier
# Cloner uniquement la branche main
git clone --single-branch --branch main https://github.com/username/projet.gitAuthentification
HTTPS (recommandé pour débuter)
GitHub : utilise un Personal Access Token depuis 2021 (plus de mot de passe).
Créer un token :
- GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- Generate new token
- Sélectionnez les permissions (repo, workflow, etc.)
- Copiez le token (vous ne le reverrez plus !)
Utilisation :
Lors du premier git push, entrez votre token à la place du mot de passe.
GitLab : similaire, via Settings → Access Tokens.
SSH (recommandé pour utilisation régulière)
Avantages : pas besoin de saisir token/mot de passe à chaque fois.
Configuration :
- Générer une clé SSH :
ssh-keygen -t ed25519 -C "votre.email@example.com"Appuyez sur Entrée pour accepter l'emplacement par défaut (~/.ssh/id_ed25519).
- Copier la clé publique :
# Linux / macOS
cat ~/.ssh/id_ed25519.pub
# Windows
type %USERPROFILE%\.ssh\id_ed25519.pub-
Ajouter la clé sur GitHub/GitLab :
- GitHub : Settings → SSH and GPG keys → New SSH key
- GitLab : Settings → SSH Keys
- Collez la clé publique
-
Tester la connexion :
# GitHub
ssh -T git@github.com
# GitLab
ssh -T git@gitlab.com- Utiliser SSH pour clone/push :
git clone git@github.com:username/projet.gitPull Requests (GitHub) / Merge Requests (GitLab)
Pull Request (PR) sur GitHub ou Merge Request (MR) sur GitLab : demande de fusion d'une branche dans une autre, avec revue de code.
Créer une Pull Request sur GitHub
Workflow complet :
- Créer une branche :
git switch -c feature/nouvelle-fonctionnalite- Développer et committer :
git add .
git commit -m "feat: ajout fonctionnalité X"- Pusher la branche :
git push -u origin feature/nouvelle-fonctionnalite-
Créer la PR sur GitHub :
- GitHub affichera un bouton "Compare & pull request"
- Ou allez dans l'onglet "Pull requests" → "New pull request"
- Sélectionnez la branche source et destination
- Ajoutez un titre et une description
- Assignez des reviewers (optionnel)
- Cliquez sur "Create pull request"
-
Revue et merge :
- Les reviewers examinent le code
- Discussion et modifications si nécessaire
- Une fois approuvée, cliquez sur "Merge pull request"
Créer une Merge Request sur GitLab
Processus similaire :
- Pusher la branche
- GitLab affiche "Create merge request"
- Remplir le formulaire (titre, description, assigné)
- Définir si suppression automatique de la branche après merge
- Créer la MR
Forker un repository
Fork : créer une copie d'un repository dans votre compte pour y contribuer.
Workflow de contribution open-source
-
Forker le projet :
- Cliquez sur "Fork" sur GitHub/GitLab
- Le repo est copié dans votre compte
-
Cloner votre fork :
git clone https://github.com/VOTRE-USERNAME/projet.git
cd projet- Ajouter le repo original comme remote "upstream" :
git remote add upstream https://github.com/AUTEUR-ORIGINAL/projet.git
git remote -v- Créer une branche pour votre contribution :
git switch -c fix/correction-bug- Développer et committer :
git add .
git commit -m "fix: correction du bug X"- Pusher sur votre fork :
git push origin fix/correction-bug-
Créer une Pull Request :
- Depuis votre fork sur GitHub
- Cliquez "Contribute" → "Open pull request"
- La PR est envoyée au repo original
-
Garder votre fork à jour :
# Récupérer les changements du repo original
git fetch upstream
git switch main
git merge upstream/main
git push origin mainCollaborer en équipe
Ajouter des collaborateurs
GitHub :
- Settings du repo → Collaborators → Add people
- Entrez le nom d'utilisateur ou email
- L'utilisateur reçoit une invitation
GitLab :
- Project → Members → Invite members
- Choisissez le niveau d'accès (Developer, Maintainer, etc.)
Protéger la branche main
Bonnes pratiques :
- Empêcher les pushs directs sur main
- Exiger des Pull Requests
- Exiger des revues de code
- Exiger que les tests passent (CI)
GitHub : Settings → Branches → Add branch protection rule
GitLab : Settings → Repository → Protected branches
Issues et Project Management
Issues
Suivre les bugs, fonctionnalités, et tâches.
Créer une issue :
- Onglet "Issues" → "New issue"
- Titre et description
- Labels (bug, enhancement, documentation, etc.)
- Assignés, milestones
Lier commits et issues :
git commit -m "fix: correction du login (#42)"Le #42 crée un lien automatique vers l'issue 42.
Fermer une issue via commit :
git commit -m "fix: problème résolu. Closes #42"Projects
Tableaux Kanban pour organiser les tâches.
GitHub : Projects → New project (Table, Board, Roadmap)
GitLab : Issue boards intégré
GitHub Actions / GitLab CI (aperçu)
Automatisation (tests, déploiement) lors des pushs/PRs.
Exemple GitHub Actions (.github/workflows/test.yml) :
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: npm testExemple GitLab CI (.gitlab-ci.yml) :
test:
script:
- npm install
- npm testRésumé des commandes
| Commande | Description |
|---|---|
git remote add origin <url> | Lier un remote |
git push -u origin main | Premier push |
git push | Envoyer les commits |
git pull | Récupérer les changements |
git fetch | Télécharger sans fusionner |
git clone <url> | Cloner un repository |
Bonnes pratiques de collaboration
Commits atomiques : un commit = un changement logique.
Messages clairs : suivre les conventions (feat, fix, docs, etc.).
Pull avant push : toujours récupérer les derniers changements avant de pusher.
Branches courtes : fusionner rapidement pour éviter les conflits.
Revue de code : toujours faire relire vos PRs.
Tests automatisés : configurer CI/CD pour valider automatiquement.
Documentation : README à jour, commentaires de code si nécessaire.
Liens vers la partie suivante
Tags
#git #github #gitlab #collaboration #pullrequest #mergerequest #remote