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 çaIl faut taper ça
Pour récupérer du code du serveur XXXXgit clone XXXXX
Pour dire que le fichier dijkstra.c doit être versionnégit add dijkstra.c
Pour estampiller mes fichiersgit commit -a -m "algorithme Dijkstra"
Pour mettre mes modifications sur le serveurgit push
Pour récupérer les modifications des autres depuis le serveurgit pull

Commandes avancées

Pour faire çaIl faut taper ça
Modifier l'URL du serveur d'un dépôt localgit 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 ?