Git est un système de gestion de versions distribué, devenu standard pour le développement collaboratif. Contrairement à des outils comme SVN, qui reposent sur un modèle centralisé, Git permet de continuer à travailler en local même sans connexion au serveur, offrant une flexibilité accrue pour les branches et les fusions.
Éléments clés de l'écosystème Git
- Git : le logiciel de base installé sur les machines locales, fournissant une interface en ligne de commande.
- GitHub / Gitee / GitLab : des plateformes d'hébergement de dépôts distants, offrant des fonctionnalités comme les pull requests, les issues et l'intégration continue. GitHub et Gitee proposent des projets publics et privés, tandis que GitLab est souvent auto-hébergé pour les environnements d'entreprise.
- Bitbucket : un service axé sur les dépôts privés, souvent utilisé avec d'autres outils Atlassian.
Installation sous Windows
Pour installer Git, rendez-vous sur le site officiel et suivez les étapes de l'installateur. Une fois installé, l'outil s'ajoute au PATH système, permettant de lancer des commandes Git depuis n'importe quel terminal. De plus, un clic droit dans l'Explorateur Windows offre l'accès à « Git Bash Here », une émulation de terminal Linux.
Pour personnaliser le menu contextuel, vous pouvez exécuter une commande similaire à celle-ci dans un treminal administrateur :
reg add "HKCU\Software\Classes\Directory\Background\shell\GitBash" /v "Icon" /t REG_SZ /d "C:\Program Files\Git\mingw64\share\git\git-for-windows.ico" /f
reg add "HKCU\Software\Classes\Directory\Background\shell\GitBash\command" /v "" /t REG_SZ /d "\"C:\Program Files\Git\git-bash.exe\" \"%%V\"" /f
taskkill /f /im explorer.exe & start explorer.exe
Fonctionnement interne de Git
Git opère avec trois zones principales :
- Répertoire de travail : où les fichiers sont modifiés directement.
- Zone de staging (index) : un intermédiaire où les changements sont préparés avant d'être validés.
- Dépôt local (.git) : la base de données contenant l'historique complet des commits.
Les dépôts distants stockent une copie partagée du projet, permettant la synchronisation entre les développeurs.
Commandes fondamentales
| Commande | Description | Remarques |
|---|---|---|
git init |
Initialise un nouveau dépôt Git dans le répertoire courant. | Crée un dossier .git caché. |
git status |
Affiche l'état des fichiers dans le répertoire de travail et la zone de staging. | Les fichiers modifiés apparaissent en rouge, ceux en staging en vert. |
git add <chemin> |
Ajoute les modifications à la zone de staging. | Utiliser . pour ajouter tous les changements. |
git commit -m "message" |
Enregistre une version basée sur le contenu de la zone de staging. | Nécessite une configuration préalable de l'utilisateur. |
git config --global user.email "exemple@mail.com" |
Définit l'adresse email globale pour tous les dépôts. | La configuration locale se fait avec --local. |
git log |
Montre l'historique des commits. | Utiliser --oneline pour une version compacte. |
git restore . |
Annule les modifications dans le répertoire de travail par rapport au dernier commit. | Remplace l'ancienne commande git checkout . |
git reset HEAD |
Déplace les fichiers de la zone de staging vers le répertoire de travail. | Conserve les modifications locales. |
git reset --hard <commit> |
Réinitialise le répertoire de travail à un commit spécifique. | Efface toutes les modifications non enregistrées ; utiliser avec prudence. |
Fichier .gitignore
Pour ignorer certains fichiers ou répertoires, créez un fichier nommé .gitignore à la racine du dépôt. Voici des exemples de motifs :
__pycache__/: ignore tous les dossiers portant ce nom.*.log: ignore tous les fichiers avec l'extension .log./build: ignore uniquement le dossier build à la racine.
Si des fichiers déjà suivis doivent être ignorés, supprimez-les du suivi avec une commande comme :
git ls-files -z "*.pyc" | xargs -0 git rm --cached
find . -type f -name "*.pyc" -delete
Branches locales
Les branches permettent de développer des fonctionnalités ou corriger des bogues en parallèle. Commandes essentielles :
| Commande | Action |
|---|---|
git branch |
Liste toutes les branches locales. |
git switch -c <nom> |
Crée et bascule sur une nouvelle branche. |
git merge <branche> |
Fusionne une branche dans la branche courante. |
Des conflits peuvent survenir lors de fusions si les mêmes lignes ont été modifiées différemment. Ils se manifestent par des marqueurs spéciaux dans les fichiers et doivent être résolus manuellement.
Gestion des dépôts distants
Connexion via SSH
Pour éviter de saisir les identifiants à chaque opération, générez une paire de clés SSH :
ssh-keygen -t ed25519 -C "votre.email@example.com"
Ajoutez la clé publique à votre profil sur la plateforme distante (GitHub, Gitee, etc.). Ensuite, ajoutez le dépôt distant :
git remote add origin git@github.com:utilisateur/depot.git
Synchronisation
- Cloner un dépôt :
git clone <url> - Pousser les changements :
git push origin <branche> - Tirer les changements :
git pull origin <branche>– fusionne les modifications distantes dans la branche locale.
Avant de pousser, il est courant de tirer les derniers changements pour éviter les conflits. Les branches locales peuvent être poussées au distant pour être partagées ou soumises à des revues via des pull requests.
Conrtibution aux projets open source
Pour contribuer à un projet public, utilisez le workflow « fork and pull » :
- Forkez le dépôt original sur votre compte.
- Clonez votre fork localement.
- Créez une branche pour votre contribution.
- Apportez des modifications et poussez-les sur votre fork.
- Ouvrez une pull request vers le dépôt original pour proposer vos changements.
Utilisation dans PyCharm
L'IDE PyCharm intègre des outils graphiques pour Git, permettant d'effectuer des opérations courantes sans ligne de commande : gestion des branches via le coin inférieur droit, historique des fichiers, et fenêtres dédiées pour le commmit, le push et le pull.