[Git](https://git-scm.com/) est un outil de gestion de versions, il permet de travailler à plusieurs sur du code en gardant un historique cohérent.
## Plan
[[_TOC_]]
## Configurer git bash et spyder
Opérations à faire une fois sur chaque poste :
1. Ouvrir notepad, copier coller les lignes ci-dessous **en changeant le nom et l'email** et sauver dans un fichier `C:\User\<user>\.gitconfig` (remplacer `<user>` par votre nom d'utilisateur)
3. Dans le menu de gauche vous devez voir voir votre projet.
### Workflow
Pour utiliser git depuis spyder vous avez 2 possibilité, nous recommandons d'utiliser l'interface graphique , pour ce faire, faire un click droit sur le projet et :
+ Commit pour ouvrir [Git gui](#git-gui) l'interface graphique principale
+ Browse repository pour ouvrir (Gitk)[#gitk] l'interface graphique de visualisation de l'état du dépôt
3. Visualiser l'historique : depuis le menu Repository > visualize Master history ou visualiza all branches history, il est possible d'ouvrir l'interface de visualisation de l'historique ([gitk](#gitk))
### Fusion à 3 fichiers
Si une collègue à effectuée des changements avant vous, le ppush sera refusé par gitlab indiquant `non fast-forward`. Il faut alors faire un `Pull` qui pourra résulter à deux situations :
1. Si vous avez modifié des fichiers différents ou des parties différentes d'un même fichier, alors git fera une fusion `fast-forward` c'est à dire qu'il prendra les deux série de changements
Avant d'accepter aller sur `changes` et relire le code, au besoin on peut cliquer à gauche à côté du code pour écrire un message / demander des changements :
2. Changer de branche `git switch` (penser à committer ou [stasher](#l-etagere) vos modifications avant
#### Conventions
Si vous appelez vos branche `n-ma-branche` (au lieu de `ma-branche`) ou `n` est un numéro d'issue gitlab, alors ce dernier reconnaîtra que votre branche est liée à l'issue `n` et mettra un lien dans le fil de discussion de l'issue
### L'étagère
Parfois il est nécessaire d'enregistrer des modifications et de les mettre de côté pour les reprendre plus tard, pour cela il est possible de faire `git stash` toutes vos modifications sont alors empilées sur une "étagère", vous pouvez changer de branche et quand vous voulez les récupèrer : `git stash pop`
### Schéma du fonctionnement des commandes principales