La créativité est un processus mental impliquant la génération de nouvelles idées ou concepts, ou de nouvelles associations entre des idées et des concepts préexistants.
Le processus de création présente des similarités intéressantes, qu'on crée :
...qui sera notre exemple pour cette présentation !
Jebediah Kerman veut créer une fusée pour attendre l'orbite de sa planète, et revenir au sol en un seul morceau !
Avant de réussir, il va probablement échouer, et recommencer.
Encore.
Et encore.
À chaque fois, il devra améliorer ou ajuster le plan de sa fusée. En pratique, c'est loin d'être simple :
Tout ça en collaboration avec Wernher von Kerman, le célèbre ingénieur !
On ne va pas versionner directement ce qu'on veut créer, mais une représentation. Cette représentation doit nous permettre de construire de façon suffisamment reproductible ce qu'on veut créer.
Représentation | Construction | Résultat |
---|---|---|
code source | compilation | programme |
partition | interprétation | musique |
plans de fusée | assemblage | fusée |
Créer va donc se concrétiser par des évolutions de la représentation.
Le versionnement, c'est la journalisation des évolutions de la représentation.
On peut imaginer une sorte de timeline où chaque nœud représente une modification :
Git s'occupe de tenir le journal des évolutions à la place du créateur (ou plutôt il l'aide beaucoup).
Git fonctionne avec n'importe quelles représentations sous forme d'arborescences de fichiers.
Regardons ses concepts de base...
Le créateur va faire évoluer la représentation. Lorsqu'il atteint un état qui lui convient, il va enregistrer au sein d'un commit les modifications qu'il a effectuées.
Un commit stocke les changements par rapport à l'état du commit parent. Il ne stocke pas le nouvel état.
La timeline des commits peut diverger ou converger. Chaque divergence est représentée par une branche :
Les branches permettent, entre autres, de :
Git permet de :
Git a été fait pour gérer des codes source de programme, mais son modèle a beaucoup de sens dans plein d'autres situations.
Voici quelques exemples où Git est utilisé pour versionner :
La prochaine fois que vous créerez quelque chose, demandez-vous si ça vaut le coup de le versionner !