25 juin 2024

📚 Les fondamentaux Git

📅 Index

🔧 Configuration

# Configurer le nom d'utilisateur
git config --global user.name "Votre Nom"

# Configurer l'email
git config --global user.email "votre-email@example.com"

# Configurer l'éditeur par défaut
git config --global core.editor "nom-editeur"

# Voir la configuration
git config --list

📁 Initialisation et Clonage

# Initialiser un nouveau dépôt Git
git init

# Cloner un dépôt existant
git clone <url-du-repo>

🌲 Gestion des Branches

# Lister toutes les branches
git branch

# Créer une nouvelle branche
git branch <nom-de-branche>

# Changer de branche
git checkout <nom-de-branche>

# Créer et changer de branche en une commande
git checkout -b <nom-de-branche>

# Fusionner une branche dans la branche courante
git merge <nom-de-branche>

# Supprimer une branche
git branch -d <nom-de-branche>

📑 Gestion des Fichiers

# Voir le statut des fichiers
git status

# Ajouter un fichier au suivi
git add <nom-de-fichier>

# Ajouter tous les fichiers au suivi
git add .

# Retirer un fichier du suivi
git rm <nom-de-fichier>

# Renommer un fichier
git mv <ancien-nom> <nouveau-nom>

💾 Gestion des Commits

# Commiter les changements
git commit -m "Message du commit"

# Modifier le dernier commit
git commit --amend

# Voir l'historique des commits
git log

# Voir un log simplifié
git log --oneline --graph --decorate --all

🌐 Gestion des Remote

# Ajouter un remote
git remote add origin <url-du-remote>

# Voir les remotes
git remote -v

# Pousser les commits vers le remote
git push origin <nom-de-branche>

# Récupérer les changements depuis le remote
git pull

# Supprimer un remote
git remote remove <nom-du-remote>

🔄 Rebaser et Merge

# Rebaser la branche courante sur une autre
git rebase <nom-de-branche>

# Fusionner une branche
git merge <nom-de-branche>

# Continuer un rebase en cours après avoir résolu les conflits
git rebase --continue

# Annuler un rebase
git rebase --abort

📋 Divers

# Afficher les différences entre fichiers
git diff

# Afficher les différences mises en stage
git diff --cached

# Afficher les différences entre deux commits
git diff <commit1> <commit2>

# Annuler les changements dans un fichier (avant commit)
git checkout -- <nom-de-fichier>

# Réinitialiser la branche courante à un commit précédent
git reset --hard <commit>

# Réinitialiser la branche courante en gardant les modifications locales
git reset --soft <commit>

# Renvoyer un fichier au stage
git reset HEAD <nom-de-fichier>

# Nettoyer le dépôt en supprimant les fichiers non suivis
git clean -f

🔒 Gestion des Tags

# Créer un tag
git tag <nom-du-tag>

# Supprimer un tag
git tag -d <nom-du-tag>

# Pousser un tag vers le remote
git push origin <nom-du-tag>

# Lister les tags
git tag

🚑 Gestion des Conflits

# Lister les conflits
git status

# Résoudre les conflits et ajouter les fichiers résolus
git add <nom-de-fichier-conflit>

# Continuer après avoir résolu les conflits
git commit

⏳ Historique et Annulation

# Voir les logs avec graph
git log --graph

# Voir les logs de manière compacte
git log --oneline

# Retourner à un commit spécifique
git checkout <commit-id>

# Créer une nouvelle branche à partir d'un commit spécifique
git checkout -b <nouvelle-branche> <commit-id>

# Annuler un commit (création d'un commit inverse)
git revert <commit-id>

🛠️ Dépannage

# Annuler le dernier commit mais garder les changements dans la staging area
git reset --soft HEAD^

# Annuler les derniers changements sans les garder
git reset --hard HEAD^

# Sauvegarder les changements locaux sans les committer
git stash

# Récupérer les changements sauvegardés
git stash pop