Par Valentin Brosseau / @c4software
Un logiciel de gestion de versions ou VCS (Version Control System) est un logiciel qui permet de stocker un ensemble de fichiers en conservant la chronologie de toutes les modifications qui ont été effectuées dessus.
Un logiciel de gestion de versions agit sur une arborescence de fichiers afin de conserver toutes les versions des fichiers.
GIT est développé par Linus Torvalds (créateur du noyau Linux) depuis 2005.
C’est un SCM (Source Code Management), un gestionnaire de versions de fichiers comme CVS ou SVN à la différence prêt qu’il est décentralisé.
Les dépôts GIT d’un projet sont donc «distribués» (aucun dépôt n’est prioritaire sur les autres).
Vos sources + un dossier « caché » le « .git ».
Le .git, est le dossier qui contient l'historique de votre projet. (et plus encore)
Différences entre 2 versions d'un fichier.
Action d'enregistrer les modifications d'un ou des fichiers. Création d'une version.
Le résultat d'une action de commit, représenté par un hash SHA-1/SHA-256.
Une lignée de développement. Par défaut tout le développement se fait dans la branche nommée « main ».
Un identifiant symbolique pour un commit.
« C'est une étiquette ou un raccourci vers une version »
Nombre de commits par semaine chez Facebook ?
(Enfin presque…, mais c'est puissant !)
$ git config --global user.name "Valentin Brosseau"
$ git config --global user.email "c4software@gmail.com"
$ cd mon_projet
$ git init
Création d'un nouveau « repository » vide.
$ vim mon_fichier.js
$ git add mon_fichier.js
$ git commit -m "Mon premier commit"
[main 745a6ef] Mon premier commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 mon_fichier.js
$ git commit -m "feat: Ajout de la fonctionnalité de connexion"
$ git commit -m "fix: Correction du bug de connexion"
$ git commit -m "docs: Ajout de la documentation"
$ git add fichier1.js fichier2.js
$ git commit -m "Mon 2nd commit"
[main aa2507d] Mon 2nd commit
2 files changed, 2 insertions(+), 0 deletions(-)
create mode 100644 fichier1.js
create mode 100644 fichier2.js
$ vim fichier.js
$ git commit -am "Changement dans le fichier"
[main 841036d] Changement dans le fichier
1 files changed, 28 insertions(+), 0 deletions(-)
$ git status
On branch main
Your branch is up-to-date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: index.html
modified: ../gitlab/index.html
no changes added to commit (use "git add" and/or "git commit -a")
Afficher les changements dans votre dépôt.
$ git config --global diff.tool vimdiff
$ git difftool
git tag V1.0
Filtrer les données sensibles (ou inutiles)
$ cat .gitignore
lib.so
conf/
*.yml
.pyc
$ git branch evolution1
$ git checkout evolution1
Switched to branch 'evolution1'
$ vim fichier2.js
$ git commit -am "Ajout de l’évolution"
[evolution1 54d9dde] Ajout de l’évolution
1 files changed, 208 insertions(+), 10 deletions(-)
$ git checkout main
$ git merge evolution1
$ git branch -d evolution1
Afficher le statut
$ git status
Ajout en staging
$ git add monFichier
Suppression de la zone de staging
$ git rm --cached
# or
$ git checkout --