Git
Git est un gestionnaire de versions. Il permet de sauvegarder différentes versions d'un code.
Pourquoi ?
Pourquoi un gestionnaire de versions ?
- Pour travailler à plusieurs
- On évite de s'envoyer des mails et de se tromper dans la version du fichier, ou de modifier à la main des parties d'un fichier
- On évite de devoir manuellement intégrer des modifications de différentes personnes
- Plusieurs personnes peuvent modifier le même fichier à des endroits différents, pas comme sur owncloud
- aspect social :
- on peut reporter des bugs et des propositions de nouvelles idées sur la plate-forme commune sans devoir s'envoyer des mails
- le projet peut être rendu visible pour d'autres personnes qui peuvent rejoindre le projet
- Pour garder plusieurs versions du logiciel (plusieurs branches)
- quelqu'un qui travaille sur une autre fonctionnalité sur sa branche ne nous embête pas
- pour revenir facilement à une version antérieure ou différente du logiciel
- Pour de la documentation "historique" : quelle était la raison de cette ligne de code ?
Pourquoi un outil décentralisé ?
L'outil git est décentralisé. C'est bien car on peut travailler dans le train, quand il n'y a pas de réseau. On peut faire des commits (c'est-à-dire estampiller des modifications) sans connexion Internet.
Créer une clé
Le plus simple pour se connecter à un dépôt (et éviter de taper un mot de passe toutes les 5 secondes et demi) est d'utiliser une clé SSH. Pour en créer, tapez cette commande :
ssh-keygen -t rsa -b 4096
Elle génère deux fichiers :
- une clef privée
id_rsa
(ne jamais donner/montrer ce fichier !) - une clef publique
id_rsa.pub
Dans github, gitlab, copier la clef publique (attention, pas la clef privée !).
Idée générale
TODO: faire une image plus simple pour commencer

Commandes principales
Pour faire ça | Il faut taper ça |
---|---|
Pour récupérer du code du serveur XXXX | git clone XXXXX |
Pour dire que le fichier dijkstra.c doit être versionné | git add dijkstra.c |
Pour estampiller mes fichiers | git commit -a -m "algorithme Dijkstra" |
Pour mettre mes modifications sur le serveur | git push |
Pour récupérer les modifications des autres depuis le serveur | git pull |
Commandes avancées
Pour faire ça | Il faut taper ça |
---|---|
Modifier l'URL du serveur d'un dépôt local | git remote rm origin puis git remote add origin <url to NEW repo> , puis git push origin --all |
Pour connaître l'URL du dépôt distant (serveur) | git remote -v |
Quiz
- Quelle est la différence entre upstream et origin ?
- Quelles est la différence entre workspace, index et local repository ?
- A-t-on besoin d'une connexion Internet pour faire un
git commit
?