📘 Guide de Maîtrise Git & GitHub Guide pratique et structuré pour comprendre Git, GitHub et les commandes essentielles du quotidien. Ce document regroupe les concepts, commandes et workflows essentiels pour la gestion de version, basés sur les standards de l'industrie.
---
- Git vs GitHub
- Cycle de travail Git
- Premieres commandes avec Git
- Connecter un depot local a GitHub
- Cloner un depot distant
- Git Credential Manager
- Voir le statut des modifications
- Ajouter des fichiers avec
git add - Annuler des changements
- Configurer Git et creer des commits
- Supprimer et restaurer des fichiers
- Consulter l'historique
- Branches et fusions
- Comprendre les conflits de fusion
- Naviguer dans l'historique et comparer
- Travailler avec les depots distants
- Mettre du travail de cote avec le stash
- Annuler un commit proprement avec
git revert - Collaborer avec les Pull Requests
- Diagnostic rapide
- Creer ou publier un depot GitHub
- Connexion SSH
- Simplifier les connexions SSH
---
Git est un système de gestion de versions.
Il enregistre l'historique de vos fichiers localement, ce qui permet de :
- suivre chaque modification ;
- conserver plusieurs versions d'un projet ;
- revenir a un état précèdent si nécessaire.
GitHub est une plateforme en ligne d'hébergement de dépôts Git.
Elle sert de point central pour :
- sauvegarder un dépôt a distance ;
- partager le code ;
- collaborer ;
- faire relire et fusionner des changements.
- Git = l'outil local de versioning
- GitHub = la plateforme distante de collaboration
---
En résume :
- Vous travaillez dans votre working directory (répertoire de travail local).
- Vous staging vos changements.
- Vous commit ces changements dans votre depot local.
- Facultativement, vous push vers un dépôt distant pour sauvegarder ou partager.
Working Directory -> Staging Area -> Local Repository -> Remote Repository
---
git --versionLe fichier source mentionnait
git -v, mais la commande standard recommandee estgit --version.
Exemple de séquence (plutôt orientée Unix/macOS/Linux a cause de touch) :
mkdir fortest
cd fortest
touch un.txt
touch deux.txt
mkdir myfolder
cd myfolder
touch trois.txtgit initCette commande cree un depot Git local dans le dossier courant.
Pour verifier le resultat :
ls -la---
Dans votre projet local :
git remote add origin https://user@github.com/TON-USER/TON-REPO.gitVerifier la branche actuelle :
git branchSi besoin, renommer la branche principale en main :
git branch -M mainAjouter et committer les fichiers si ce n'est pas deja fait :
git add .
git commit -m "Initial commit"Envoyer sur GitHub :
git push -u origin mainSi le depot GitHub contient deja un README, une licence ou un commit initial :
git pull origin main --rebase
git push -u origin main---
Lorsque vous clonez un depot, vous pouvez inclure l'identite avant le nom de domaine pour aider Git et Git Credential Manager a utiliser le bon compte.
Au lieu de :
git clone https://example.com/open-source/library.gitUtilisez :
git clone https://contrib123@example.com/open-source/library.gitPuis :
cd happyday
ls -laVous pouvez mettre a jour l'URL distante :
git remote set-url origin https://employee9999@example.com/big-company/secret-repo.git---
Commande source :
git credential-manager github --helpInformations utiles :
Description:
Commands for interacting with the GitHub host provider
Usage:
git-credential-manager github \[command] \[options]
Options:
--no-ui Do not use graphical user interface prompts
-?, -h, --help Show help and usage information
Commands:
list List all known GitHub accounts.
login Add a GitHub account.
logout <account> Remove a GitHub account.
---
git statusCette commande affiche l'etat actuel du depot :
- fichiers modifies ;
- fichiers stagges ;
- fichiers non suivis ;
- branche courante.
---
git add --all
git add -AStage toutes les modifications :
- ajouts ;
- modifications ;
- suppressions.
git add .Stage les changements du dossier courant et de ses sous-dossiers, y compris les suppressions.
git add \*Ajoute les nouveaux fichiers et les fichiers modifies visibles, mais pas les suppressions.
Comportement a utiliser avec prudence selon le shell.
git add fichier.txt
git add myFolder/six.txtgit add \*.txtAjoute les fichiers .txt du dossier courant uniquement, sans les sous-dossiers.
---
git restore premier.txt
git restore folder/git restore .git restore --staged fichier.txtgit restore --staged .git reset
git resetretire du staging, mais ne supprime pas les modifications locales du working directory.
---
git config --global user.name "Bidouille"
git config --global user.email "bidouille@gmail.com"git config --local user.name "Matt"
git config --local user.email "matt@monentreprise.net"git config --listSous Linux/macOS :
man git-configgit commit -m "I have made some changes to files"git reset HEAD---
git rm four.txtgit resetgit reset --hardAttention :
git reset --hardefface les modifications locales non committees.
git rm -f four.txtgit rm --cached four.txtgit rm -r myfolder---
git loggit log --onelinegit log --oneline --name-statusCodes frequents :
A= ajoutM= modificationD= suppression
---
Un point important : une nouvelle branche reprend exactement l'etat de la branche active au moment de sa creation.
git branchL'asterisque \* indique la branche courante.
git branch frontendgit checkout frontendSeuls les fichiers presents dans la branche courante sont visibles dans l'etat correspondant du projet.
git checkout -b destinationImporter les changements de main dans frontend :
git checkout frontend
git merge main -m "import changes from main into frontend"Puis reintegrer frontend dans main :
git checkout main
git merge frontend -m "import changes from frontend into main"git branch -d nom\_de\_la\_branchegit branch -D nom\_de\_la\_branchegit push origin --delete nom\_de\_la\_brancheRemarque moderne :
git switchpeut remplacergit checkoutpour les changements de branche, mais les commandes source ont ete conservees ici.
---
Un merge conflict apparait lorsque la meme zone d'un fichier a ete modifiee dans des branches differentes.
Git ne sait alors pas quelle version conserver.
- Ouvrir le fichier en conflit.
- Choisir la bonne version ou fusionner les deux.
- Sauvegarder le fichier.
- Ajouter le fichier.
- Faire un commit.
---
git log --onelinegit checkout b52a404git diff f0819e3 a81d08aNaviguer ainsi place generalement le depot en **detached HEAD** si vous n'etes pas sur une branche.
---
git push origin main
git checkout staging
git push origin staginggit fetch
git mergeEn pratique, apres
git fetch, on fusionne souvent explicitement la branche distante cible, par exemplegit merge origin/main.
git pullgit pull = git fetch + git merge
Faire une fois :
git push -u origin frontend-v0.0L'option -u (--set-upstream) permet de :
- lier la branche locale a la branche distante ;
- simplifier les prochains
git push; - simplifier les prochains
git pull.
Ensuite, vous pourrez souvent utiliser simplement :
git push
git pullgit branch -a---
Le stash permet de sauvegarder temporairement un travail non termine pour changer de branche ou traiter autre chose.
git stashgit stash popgit stash applygit stash listgit stash pop stash@{0}
git stash apply stash@{0}git stash drop---
git revert permet de revenir a l'etat precedant un commit en creant un nouveau commit, sans reecrire l'historique.
git log --oneline
git revert 0429467---
Une Pull Request (PR) est une demande de fusion de vos changements dans une autre branche, souvent main.
L'idee est simple :
- vous travaillez dans votre propre branche ;
- vous poussez cette branche sur GitHub ;
- vous demandez une revue ;
- si tout est valide, la branche est fusionnee.
Dans l'interface GitHub :
- onglet Pull requests
base: maincompare: feature
Autrement dit :
"J'ai fait des changements dans la branche de developpement et je demande leur fusion dans
main."
---
git remote -vgit remote set-url origin git@github.com:Matrak/happyday.gitgit config --global user.name
git config --global user.email---
echo "# nawel\_portfolio" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/6net7/nawel\_portfolio.git
git push -u origin maingit remote add origin https://github.com/6net7/nawel\_portfolio.git
git branch -M main
git push -u origin main---
ssh-keygen -o -a 100 -t ed25519 -f \~/.ssh/id\_ed25519 -C "fred@bzhack.bzh"ssh-copy-id admin@192.168.6.66Avec les parametres par defaut, ssh-copy-id :
- utilise le fichier
id\_rsa.pubou la cle publique indiquee selon votre configuration ; - ajoute la cle dans
authorized\_keysdu compte distant ; - demande generalement le mot de passe une derniere fois.
Sur certains systemes modernes, si vous creez une cle
ed25519, c'est cette cle qui sera utilisee plutot queid\_rsa.pub.
---
Pour gerer plus facilement plusieurs serveurs, vous pouvez utiliser :
- des alias shell ;
- ou, de facon plus propre, un fichier
\~/.ssh/config.
mkdir -p \~/.ssh \&\& chmod 700 \~/.ssh
touch \~/.ssh/config
chmod 600 \~/.ssh/configHost mon-serveur
HostName 192.168.6.66
User admin
IdentityFile \~/.ssh/id\_ed25519Ensuite, la connexion devient :
ssh mon-serveur---
git initinitialise un depot local.git addprepare les changements.git commitenregistre un snapshot local.git pushenvoie les commits vers le depot distant.git pullrecupere et fusionne les changements distants.git stashmet temporairement des modifications de cote.git revertannule un commit sans casser l'historique.
---
Ce document est fourni comme aide-memoire pedagogique sur Git, GitHub et SSH.