Git et Django : publier son projet sur GitHub et le récupérer sur un autre poste

Git est l'outil de versioning incontournable de tout développeur. Il vous permet de sauvegarder l'historique de votre code, de collaborer à plusieurs, et de retrouver votre projet intact sur n'importe quel ordinateur. Dans ce guide complet, vous apprendrez pas à pas comment initialiser un dépôt Git sur votre projet Django, le pousser sur GitHub, puis le cloner et le relancer sur un nouveau poste (Windows, Linux ou macOS).
Sommaire
  1. Installer Git (Windows, Linux, macOS)
  2. Configurer son identité Git
  3. Créer le .gitignore pour un projet Django
  4. Initialiser le dépôt local et faire le premier commit
  5. Créer le dépôt distant sur GitHub
  6. Lier le dépôt local au dépôt distant et pousser
  7. Le workflow quotidien : add → commit → push
  8. Récupérer le projet sur un autre poste (clone + setup)
  9. Commandes Git essentielles (cheatsheet)
  10. Conclusion et prochaines étapes

1. Installer Git

Git s'installe différemment selon l'OS. Choisissez le vôtre ci-dessous, puis vérifiez l'installation avec git --version dans votre terminal.

🪟 Windows
🐧 Linux
🍎 macOS

Windows

Téléchargez l'installateur officiel sur git-scm.com. Lors de l'installation, conservez les options par défaut — elles configurent automatiquement Git Bash et l'intégration dans l'explorateur Windows.

Après installation, ouvrez Git Bash (ou PowerShell) et vérifiez :

git --version
# git version 2.47.x.windows.x
💡 Sur Windows, préférez Git Bash aux invites de commandes classiques pour les commandes Git — le comportement est identique à Linux/macOS.

Linux (Ubuntu / Debian)

sudo apt update
sudo apt install git -y
git --version

Sur Fedora / RHEL :

sudo dnf install git -y

macOS

Git est souvent déjà présent via les Xcode Command Line Tools. Vérifiez d'abord :

git --version

Si absent, installez via Homebrew :

brew install git

2. Configurer son identité Git

Avant le premier commit, Git a besoin de connaître votre nom et votre adresse email. Ces informations sont attachées à chaque commit que vous créerez. Elles sont visibles dans l'historique et sur GitHub. Cette configuration est à faire une seule fois par poste.

git config --global user.name "Votre Nom"
git config --global user.email "vous@exemple.com"

# Définir VS Code comme éditeur par défaut (optionnel mais recommandé)
git config --global core.editor "code --wait"

# Vérifier la configuration
git config --list
💡 L'option --global applique ces paramètres à tous vos projets sur ce poste. Si vous travaillez sur un projet professionnel avec une autre identité, utilisez --local (sans --global) dans le dossier du projet pour le surcharger localement.

3. Créer le .gitignore pour un projet Django

Le fichier .gitignore indique à Git quels fichiers et dossiers ne pas versionner. Pour un projet Django, plusieurs éléments ne doivent absolument jamais se retrouver sur GitHub : l'environnement virtuel (trop volumineux, spécifique à l'OS), les fichiers de secrets, la base de données SQLite locale, et les fichiers de cache Python.

Créez un fichier .gitignore à la racine de votre projet avec le contenu suivant :

# === Environnement virtuel ===
env/
venv/
.venv/

# === Fichiers Python compilés ===
__pycache__/
*.py[cod]
*.pyo

# === Base de données locale ===
*.sqlite3
db.sqlite3

# === Fichiers de secrets et configuration locale ===
.env
.env.local
*.env

# === Fichiers media uploadés (spécifiques au poste) ===
media/

# === Fichiers statiques collectés ===
staticfiles/
static_root/

# === IDE et éditeurs ===
.vscode/
.idea/
*.swp

# === macOS ===
.DS_Store

# === Logs ===
*.log
⚠ Le fichier .env contient votre SECRET_KEY Django, vos identifiants de base de données et vos clés API. Ne le commitez jamais. Ajoutez-le au .gitignore avant votre premier commit (le retirer de l'historique Git après coup est fastidieux).

Utiliser les variables d'environnement avec python-decouple

Pour que vos secrets restent hors du dépôt tout en étant utilisables, installez python-decouple et adaptez settings.py :

pip install python-decouple
pip freeze > requirements.txt
# settings.py
from decouple import config

SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='127.0.0.1').split(',')
# .env (jamais versionné !)
SECRET_KEY=votre-clé-secrète-très-longue
DEBUG=True
ALLOWED_HOSTS=127.0.0.1,localhost

Créez également un fichier .env.example que vous versionnez lui car il sert de modèle pour les nouveaux développeurs, sans contenir de vraies valeurs :

# .env.example (versionné dans Git - valeurs fictives)
SECRET_KEY=changez-moi
DEBUG=True
ALLOWED_HOSTS=127.0.0.1

4. Initialiser le dépôt local et faire le premier commit

Placez-vous à la racine de votre projet Django (là où se trouve manage.py) et exécutez les commandes suivantes dans l'ordre :

1

Initialiser Git - crée un dossier caché .git/ qui contiendra tout l'historique :

git init
2

Vérifier l'état - affiche les fichiers non suivis (en rouge) :

git status
3

Ajouter tous les fichiers au staging - le point . signifie "tout le répertoire courant" :

git add .

Vérifiez que le .gitignore a bien exclu les bons fichiers :

git status
# Les fichiers en vert sont dans le staging.
# env/, *.sqlite3, .env ne doivent PAS apparaître.
4

Créer le premier commit - le message décrit ce que contient ce snapshot :

git commit -m "feat: initialisation du projet Django"
💡 Adoptez dès le début une convention de messages de commit claire. Le format Conventional Commits est très répandu : feat: pour une nouvelle fonctionnalité, fix: pour une correction, docs: pour la documentation, refactor: pour une refactorisation.

5. Créer le dépôt distant sur GitHub

GitHub est la plateforme de référence pour héberger des dépôts Git. Il vous faut un compte gratuit sur github.com.

1

Connectez-vous sur GitHub et cliquez sur le bouton "New repository" (ou le + en haut à droite).

2

Remplissez le formulaire :

  • Repository name : le nom de votre projet (ex. mon-blog-django)
  • Visibility : Public (visible par tous) ou Private (visible par vous seul)
  • Ne cochez rien dans "Initialize this repository" — votre dépôt local existe déjà
3

Cliquez sur "Create repository". GitHub affiche alors les commandes à exécuter — nous les utiliserons dans la section suivante.

Authentification : HTTPS ou SSH ?

HTTPS (le plus simple)
Utilise votre nom d'utilisateur GitHub + un token d'accès personnel (PAT). Idéal pour démarrer rapidement. GitHub demande le token à chaque push si pas de gestionnaire de credentials.
SSH (le plus confortable)
Paire de clés publique/privée. Plus de mot de passe après la configuration initiale. Recommandé pour un usage quotidien sur un poste fixe.

Configurer SSH (recommandé)

🪟 Windows
🐧 Linux
🍎 macOS

Ouvrez Git Bash et générez une paire de clés SSH :

ssh-keygen -t ed25519 -C "vous@exemple.com"
# Appuyez sur Entrée pour accepter le chemin par défaut
# Définissez une passphrase ou laissez vide
# Afficher la clé publique à copier sur GitHub
cat ~/.ssh/id_ed25519.pub
ssh-keygen -t ed25519 -C "vous@exemple.com"
cat ~/.ssh/id_ed25519.pub
# Démarrer l'agent SSH et ajouter la clé
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-keygen -t ed25519 -C "vous@exemple.com"
# Ajouter au trousseau macOS
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub

Copiez la clé publique affichée, puis dans GitHub : Settings → SSH and GPG keys → New SSH key. Collez la clé et sauvegardez. Testez la connexion :

ssh -T git@github.com
# Hi votre-username! You've successfully authenticated...

6. Lier le dépôt local au dépôt distant et pousser

Votre dépôt local existe, votre dépôt GitHub est créé, il faut maintenant les connecter. GitHub affiche ces commandes directement après la création du dépôt.

Avec SSH (recommandé)

# Lier le dépôt local au dépôt distant (à faire une seule fois)
git remote add origin git@github.com:votre-username/mon-blog-django.git

# Renommer la branche principale en "main" (convention actuelle)
git branch -M main

# Pousser le premier commit et définir "origin main" comme destination par défaut
git push -u origin main

Avec HTTPS

git remote add origin https://github.com/votre-username/mon-blog-django.git
git branch -M main
git push -u origin main

Après cette première fois, le flag -u (upstream) est mémorisé : les prochains git push sans argument pousseront automatiquement vers origin main.

Actualisez la page de votre dépôt sur GitHub ... tous vos fichiers apparaissent ! Votre projet est maintenant sauvegardé dans le cloud et accessible depuis n'importe quel poste.

7. Le workflow quotidien : add → commit → push

À chaque session de travail, le cycle Git se répète toujours dans le même ordre. Voici comment gérer vos modifications au quotidien :

# 1. Voir l'état des fichiers modifiés
git status

# 2. Ajouter les fichiers modifiés au staging
git add .                        # tout le projet
git add blog/models.py           # un fichier précis
git add blog/                    # un dossier entier

# 3. Créer un commit avec un message descriptif
git commit -m "feat: ajout du modèle Tag avec slug auto"

# 4. Pousser sur GitHub
git push

Bonnes pratiques de commit

Commits atomiques
Un commit = une modification logique. Préférez 5 petits commits ciblés à 1 gros commit fourre-tout. L'historique sera lisible et les git revert seront précis.
Messages au présent
Écrivez "ajoute la vue detail" et non "ajouté la vue detail". Le message doit compléter la phrase : "Ce commit [message]."
Vérifier avant de committer
Utilisez git diff pour relire vos modifications avant git add. Évite les commits accidentels de code de debug ou de print().
Ne pas forcer le push
Évitez git push --force sur une branche partagée. Cela écrase l'historique des autres contributeurs sans avertissement.

Consulter l'historique

# Historique condensé, une ligne par commit
git log --oneline

# Historique avec détails (auteur, date, message)
git log --oneline --graph --all

# Voir les modifications d'un commit précis
git show abc1234

8. Récupérer le projet sur un autre poste

Vous changez d'ordinateur, vous intégrez un collègue dans le projet, ou vous configurez un serveur de production — dans tous ces cas, la procédure est la même : cloner le dépôt, créer l'environnement virtuel, installer les dépendances, configurer les secrets et appliquer les migrations.

1

Cloner le dépôt - télécharge l'intégralité du code et de l'historique Git dans un nouveau dossier :

# Via SSH (si vous avez configuré une clé SSH sur ce poste)
git clone git@github.com:votre-username/mon-blog-django.git

# Via HTTPS (sans configuration préalable)
git clone https://github.com/votre-username/mon-blog-django.git

# Se placer dans le dossier créé
cd mon-blog-django
2

Créer l'environnement virtuel - il n'est pas versionné, il faut le recréer sur chaque poste :

🪟 Windows
🐧 Linux
🍎 macOS
python -m venv env
env\Scripts\activate
python3 -m venv env
source env/bin/activate
python3 -m venv env
source env/bin/activate
3

Installer les dépendances depuis le fichier requirements.txt versionné dans Git :

pip install -r requirements.txt
4

Créer le fichier .env à partir du modèle .env.example et renseigner les vraies valeurs :

🪟 Windows
🐧 Linux
🍎 macOS
copy .env.example .env
# Puis éditez .env avec vos vraies valeurs (Notepad, VS Code...)
cp .env.example .env
nano .env   # ou code .env si VS Code est installé
cp .env.example .env
open -e .env   # ouvre dans TextEdit, ou utilisez code .env
5

Appliquer les migrations - recrée la base de données sur ce poste :

python manage.py migrate
6

Créer un superutilisateur pour accéder à l'interface admin :

python manage.py createsuperuser
7

Lancer le serveur et vérifier que tout fonctionne :

python manage.py runserver
Votre projet est opérationnel sur le nouveau poste. La base de données est vierge mais la structure est identique à l'original grâce aux migrations versionnées dans Git.

Rester synchronisé au quotidien

Si vous travaillez sur plusieurs postes ou en équipe, commencez toujours votre session par un git pull pour récupérer les dernières modifications publiées sur GitHub :

# Récupérer et fusionner les dernières modifications du dépôt distant
git pull

# Si des nouvelles migrations ont été ajoutées par un collègue :
python manage.py migrate

9. Cheatsheet - commandes Git essentielles

CommandeDescription
git init
Initialise un dépôt Git dans le dossier courant
git status
Affiche l'état des fichiers (modifiés, staged, non suivis)
git add .
Ajoute tous les fichiers modifiés au staging
git add <fichier>
Ajoute un fichier précis au staging
git commit -m "msg"
Crée un commit avec le message fourni
git push
Pousse les commits locaux vers le dépôt distant
git pull
Récupère et fusionne les commits du dépôt distant
git clone <url>
Clone un dépôt distant en local (code + historique)
git log --oneline
Affiche l'historique condensé des commits
git diff
Affiche les modifications non staged ligne par ligne
git restore <fichier>
Annule les modifications non staged d'un fichier
git restore --staged <f>
Retire un fichier du staging sans supprimer les modifs
git branch <nom>
Crée une nouvelle branche
git checkout -b <nom>
Crée une branche et bascule dessus
git merge <branche>
Fusionne une branche dans la branche courante
git stash
Met de côté les modifications en cours sans committer
git stash pop
Réapplique les modifications mises de côté
git remote -v
Liste les dépôts distants configurés
git remote add origin <url>
Lie le dépôt local à un dépôt distant

Conclusion : Git, le filet de sécurité de tout développeur

Vous maîtrisez maintenant le cycle complet : initialiser un dépôt local, configurer le .gitignore pour protéger vos secrets, pousser vers GitHub, et relancer le projet sur n'importe quel poste en quelques commandes. Git n'est pas seulement une sauvegarde, c'est aussi un journal de bord qui vous permet de revenir en arrière, de comprendre l'évolution du code, et de collaborer sereinement.

Dans un prochain article, nous irons plus loin avec les branches Git : travailler sur des fonctionnalités en parallèle, gérer les pull requests sur GitHub, et résoudre les conflits de fusion. Des compétences indispensables dès que vous travaillez en équipe.

Mots-clés : git init django, gitignore django, git push github, git clone projet django, versionner projet python, configurer git, requirements.txt django, variables environnement django .env, git workflow quotidien