Garder historique de toutes les modifications, naviguer dans l'historique
Travailler en parallèle sur plusieurs versions du projet, en grand nombre, expérimenter...
"Git gets easier once you get the basic idea that branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space."
— Isaac Wolkerstorfer
Principes et bonnes pratiques
Branches, merge & PR
Workflow
Profil GitHub
$ git status
Détails des différences
$ git diff
Ajoute les modifs et nouveaux fichiers à l'index
$ git add path/file_name
ou
$ git add -A
$ git commit
ou
$ git commit -m "commit short message"
Ajoute le contenu actuel de l'index dans un commit du repository local
$ git add path/file_name
$ git add path/file_name2
$ git commit -m "Commit one feature"
$ git add path/another_file
$ git commit -m "Commit another unrelated update"
$ git add --patch
✓Bon :
Add integration tests for character CRUD
X Pas bon :
Added new CSS and the styling is now over
Bug corrigé sur le formulaire
$ git commit -m "Fix typo in config file"
$ git commit
SHA
$ git reset --hard
$ git reset --hard [SHA_COMMIT]
$ (git checkout [SHA_COMMIT])
Sauvegarde de son code à distance
Collaboration via un remote partagé
$ git remote add origin git@github.com:etc.
$ git push origin branch-name
$ git push -u origin branch-name
$ git push
$ git pull
Sublime : GitGutter package
Tester, expérimenter
Créer des nouvelles features
Travailler en équipe
Lister les branches
créer une branche
se positionner sur une branche
$ git branch branch-name
$ git checkout branch-name
$ git checkout -b branch-name
combo
$ git branch
Updater une branche
Ramener les modifs validées sur master
$ git checkout nom-branche1
$ git merge nom-branche2
(Merge Request sur GitLab)
Copie d'un repository sans affecter le repository original
Contribution à des projets open source :
Passer temporairement sur une autre branche
Déplacer le travail en cours sur une autre branche
$ git stash
$ git stash pop
git ajoute des marqueurs dans le fichier
<<<<<<< HEAD
Update hello again from feature1 branch
=======
Update hello again from master
>>>>>>> master
résoudre le conflit, supprimer les marqueurs
$ git commit
puis sans message de commit
GitHub vérifie les conflits automatiquement
au moment de la PR
résoudre les différents conflits dans l'interface GitHub (meh)
Avec ou sans PR
Gestion des conflits
git pull
git checkout -b cool-feature
modifs...
git commit...
modifs...
git commit...
git checkout master
git pull
git merge cool-feature
git push
git pull
git checkout -b cool-feature
modifs...
git commit...
modifs...
git commit...
git push origin cool-feature
→ Open Pull Request
Merger master sur sa branche
Gérer les confits
Merger sa branche sur master
$ git pull origin master
$ git merge master
...
$ git checkout master
$ git merge cool-feature
$ git push
git pull
git checkout -b cool-feature
modifs...
git commit...
modifs...
git commit...
git pull origin master
git merge master
git checkout master
git merge cool-feature
git push
Gestion des conflits
git pull
git checkout -b cool-feature
modifs...
git commit...
modifs...
git commit...
git push origin cool-feature
PR de master depuis cool-feature
Gestion des conflits
PR de cool-feature depuis master
git checkout master
git pull
git checkout -b feature1
modifs...
git commit...
modifs...
git commit...
git checkout master
git pull
git checkout feature1
git merge master
git push -u origin feature1
→ Open Pull Request
Cheat Sheets
Tests techniques
Projets persos
Contributions
Photo
Nettoyer régulièrement
https://www.learnenough.com/git-tutorial
https://openclassrooms.com/courses/gerer-son-code-avec-git-et-github
1/2
2/2