▶ git config --global alias.co checkout
▶ git config --global alias.br branch
▶ git config --global alias.ci commit
▶ git config --global alias.st status
▶ git config --list
alias.ass=add
alias.br=branch
alias.co=checkout
alias.st=status
include.path=/nix/store/471bf9jb0fkh15n8kcjbfsnnak5njp14-hm_gitconfig
color.ui=auto
core.autocrlf=input
core.editor=vi
core.quotepath=false
gui.editor=kate
init.defaultbranch=main
pull.default=current
push.default=current
user.email=didier.amyot@gmail.com
user.name=didier amyot
Git is a free and open source distributed version control system designed to handle everything
from small to very large projects with speed and efficiency.
Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM
tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
Git (/ɡɪt/)[8] is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers who are collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows (thousands of parallel branches running on different computers)
Un logiciel de gestion de versions (ou VCS en anglais, pour 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. Il permet notamment de retrouver les différentes versions d'un lot de fichiers connexes.
Savoir qui à changé le code source
Savoir quand le code source à changé
savoir pourquoi le code source à changé
Travailler ensemble
Garder l'historique du projet
partage le code par courriel ou dropbox
l'historique du projet est gardé dans des fichier zip un peu partout
Toute l'historique du projet sera gardé dans le projet. Un projet sous système de version se nomme un "répository"
On utilisera un outil en ligne de commande git pour
ajouter à l'historique
chercher dans l'historique
merger le répository locale avec d'autres répositories
projet-koala/
├─ .gitignore
├─ .git/
├─ src/
│ ├─ server.ts
├─ README.md
On utilisera Github comme origin
Github deviendra le "source of all thruth" pour ce qui est dans le projet
Github deviendra la vitrine publique de notre projet
Chaque contributeur "pushera" ces changements sur github
Chaque contributeur "pullera" les changements des autres de github
flowchart TD
A[github]-- Pull/Push ---X[Manel]
A[github]-- Pull/Push ---Y[Walid]
A[github]-- Pull/Push ---Z[Haikel]
A[github]-.- |Pull| U[didier]
On peut créer des "issues"
On peut rouler les unit tests automatiquement.
On peut même déployer automatiquement
continuous integration (CI) and continuous delivery
flowchart LR
A[Programmeur]-.-> B["Github"]
B-- GitHub\nActions -->C["Builder"]
C-- GitHub\nActions --> D["Tester"]
D-- GitHub\nActions --> E["Deployer"]
Un dossier managé par git
Le dossier contient un sous dossier .git qui contient tout l'historique
Une source du code dans un lieu fort fort lointain (ex: github, gitlab)
d'habitude, il y a un seul remote qui se nomme origin
Un snapshot complet de tout le répo à un certain temps
Est identifié avec un hash
Contient le hash des parents
On peut travailler sur plusieurs features en parallel sur le même projet.
Une branch est un peu comme le commit le plus récent
La branche principale se somme usuellement main ou master
Mot que git utilise pour dire "la branche courrante"
Former un nouveau commit à partir de plusieurs commit
La pluspart du temps, on merge un branche dans une autre branch
git clone <url>¶Sert à cloner une projet.
Ça prend une copie complète d'un projet avec tout l'historique
Parce que nous aimons cela!
Parce que c'est nécessaire
git status (git st)¶On regarde l'état du répo local
On voit tous les changements
On peut utiliser git diff pour regarder les changements avec
git add <...files>¶Les changements que nous voulons sauvegarder
Ici, nous ne "committons" pas encore les changements
Nous dissons, "Je pense que je devrait sauvegarder cela"
Les changements ajoutés sont dans le "staging area"
git commit -m "<Le message du commit>"¶Là nous demandons à git de sauvegarder nos changements
Tous les changements "stagés"
git push¶on upload nos changements sur un remote
on peut uploader nos sur une autre branche ou un autre remote avec git push <remote-name> <branch-name> (git push origin master)
On peut travailler sur plusieurs features en parallel sur le même projet.
Une branch est un peu comme le commit le plus récent
La branche principale se somme usuellement main ou master
git status met en évidence la branche sur laquel nous nous trouveonsIl y a une "merge conflict"
C'est à vous de résoudre le conflit