workshop_git
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
workshop_git [2024/03/21 15:46] – bigMax | workshop_git [2024/04/03 07:49] (Version actuelle) – bigMax | ||
---|---|---|---|
Ligne 32: | Ligne 32: | ||
``` bash | ``` bash | ||
git clone git@github.com: | git clone git@github.com: | ||
+ | git clone https:// | ||
+ | cd mass | ||
git branch | git branch | ||
git branch -r | git branch -r | ||
Ligne 40: | Ligne 42: | ||
git hist ORIG_HEAD.. --stat --no-merges | git hist ORIG_HEAD.. --stat --no-merges | ||
``` | ``` | ||
+ | |||
+ | ## Mot clés | ||
+ | - repo : repository ou dépôt en français : structure conservant toute nos opérations git (peut être local ou distant) (un espace de stockage, une base de donnée) | ||
+ | - tree : (arbre en français) structure de donnée interne représentant d'un dossier et tout son contenu | ||
+ | - blob : structure de donnée intern représentant un fichier | ||
+ | - commit : collections de fichiers & dossiers représentés par un hash (sha1) | ||
+ | - HEAD : On peut voir ça comme une "tête de lecture" | ||
+ | - pathspec : expression representant un ou plusieurs chemins de fichier dans un dépôt | ||
+ | - tree-ish : expression représentant un tree (ex: HEAD: | ||
+ | - commit-ish : expression représentant un commit (ex: HEAD) (ex: f8f3f58) | ||
+ | - worktree / working tree / working directory : repertoire de travail qui reflete le contenu d'un commit | ||
+ | - index / staging area : zone tampon qui stoque un tree contenant les modification en attente de commit | ||
+ | - tag: pointeur vers un commit | ||
+ | - branch : pointeur vers un commit " | ||
## Tuto 2 : modifier des fichiers comparer et commit les modifications | ## Tuto 2 : modifier des fichiers comparer et commit les modifications | ||
Ligne 64: | Ligne 80: | ||
git diff HEAD^ | git diff HEAD^ | ||
``` | ``` | ||
- | |||
- | ## Mot clés | ||
- | - repo : repository ou dépôt en français : structure conservant toute nos opérations git (peut être local ou distant) (un espace de stockage, une base de donnée) | ||
- | - tree : (arbre en français) structure de donnée interne représentant d'un dossier et tout son contenu | ||
- | - blob : structure de donnée intern représentant un fichier | ||
- | - commit : collections de fichiers & dossiers représentés par un hash (sha1) | ||
- | - HEAD : On peut voir ça comme une "tête de lecture" | ||
- | - pathspec : expression representant un ou plusieurs chemins de fichier dans un dépôt | ||
- | - tree-ish : expression représentant un tree (ex: HEAD: | ||
- | - commit-ish : expression représentant un commit (ex: HEAD) (ex: f8f3f58) | ||
- | - worktree / working tree / working directory : repertoire de travail qui reflete le contenu d'un commit | ||
- | - index / staging area : zone tampon qui stoque un tree contenant les modification en attente de commit | ||
- | - tag: pointeur vers un commit | ||
- | - branch : pointeur " | ||
## Fonctionnement | ## Fonctionnement | ||
### Interne | ### Interne | ||
- | [Documentation Git Internals - Git Objects](https:// | ||
- | |||
</ | </ | ||
{{ : | {{ : | ||
< | < | ||
+ | [Documentation Git Internals - Git Objects](https:// | ||
### Décentralisé | ### Décentralisé | ||
Ligne 92: | Ligne 93: | ||
- On peut commit dans son repo local | - On peut commit dans son repo local | ||
- La réconciliation peut être compliqué si plusieurs personnes modifie le même fichier simultanément (classique, ce n'est pas magique) | - La réconciliation peut être compliqué si plusieurs personnes modifie le même fichier simultanément (classique, ce n'est pas magique) | ||
+ | |||
</ | </ | ||
- | {{ : | + | {{ : |
< | < | ||
Ligne 102: | Ligne 104: | ||
### Branch | ### Branch | ||
- | TODO | + | Une branche pointe vers un commit, mais à la différence du tag, on " |
- | + | ||
- | ### Tags | + | |
- | TODO | + | |
</ | </ | ||
- | {{ : | + | {{ : |
< | < | ||
### diff comme patch | ### diff comme patch | ||
- | les git diff permettent de produire des fichiers patch qui peuvent être appliqués à la main | + | Les git diff permettent de produire des fichiers patch qui peuvent être appliqués à la main. |
- | TODO: image | + | |
+ | </ | ||
+ | {{ :media_12: | ||
+ | < | ||
## Tuto 3 : Initialiser son propre dépôt git et travailler dessus | ## Tuto 3 : Initialiser son propre dépôt git et travailler dessus | ||
Ligne 161: | Ligne 163: | ||
### Exemples de solutions déployable | ### Exemples de solutions déployable | ||
Il existe des outils pour déployer dans une forge git privé. | Il existe des outils pour déployer dans une forge git privé. | ||
+ | - gitlab : complet et lourd | ||
+ | - gitea ? | ||
TODO | TODO | ||
## Tuto 4 : Creer et suivre (track) un remote repo (dépôt distant) sur une forge git | ## Tuto 4 : Creer et suivre (track) un remote repo (dépôt distant) sur une forge git | ||
- | TODO | + | Demo en live sur framagit. |
- | git remote add | + | |
+ | ``` bash | ||
+ | git remote | ||
+ | git remote add origin git@framagit.org: | ||
git remote | git remote | ||
git remote -v | git remote -v | ||
- | git push | + | git branch -M main |
+ | git push -uf origin main | ||
+ | ``` | ||
+ | Visit URL: https:// | ||
## Quoi commit ? | ## Quoi commit ? | ||
Ligne 217: | Ligne 227: | ||
## Merge vs Rebase ? | ## Merge vs Rebase ? | ||
Débat d' | Débat d' | ||
+ | |||
Les 2 opérations permettent de fusionner 2 branches en une. Typiquement on va fusionner la branch develop dans la branch main lorsque l'on a terminé ses modifications sur la branch develop. | Les 2 opérations permettent de fusionner 2 branches en une. Typiquement on va fusionner la branch develop dans la branch main lorsque l'on a terminé ses modifications sur la branch develop. | ||
+ | |||
Les 2 opérations different dans la manière de réaliser cette fusion dans l' | Les 2 opérations different dans la manière de réaliser cette fusion dans l' | ||
- | TODO image | + | </ |
+ | {{ : | ||
+ | < | ||
### Merge | ### Merge | ||
Ne modifie pas l' | Ne modifie pas l' | ||
- | TODO image | ||
### Rebase | ### Rebase | ||
Modifie l' | Modifie l' | ||
- | TODO image | ||
### squash | ### squash | ||
Ligne 243: | Ligne 256: | ||
### Git flow : exemple de workflow pour travailler à plusieurs sans se marcher sur les pieds | ### Git flow : exemple de workflow pour travailler à plusieurs sans se marcher sur les pieds | ||
- Pour travailler seul et surtout a plusieurs nécéssaire de se mettre d' | - Pour travailler seul et surtout a plusieurs nécéssaire de se mettre d' | ||
- | TODO: Expliquer | + | </ |
+ | {{ :media_12: | ||
+ | < | ||
+ | [Une doc en français](https:// | ||
+ | [Une doc fr du plugin git-flow](https:// | ||
### Autres | ### Autres | ||
TODO: Linker d' | TODO: Linker d' | ||
+ | |||
+ | ## Pull requests | ||
+ | TODO | ||
## Trucs utiles | ## Trucs utiles | ||
Ligne 255: | Ligne 275: | ||
### Alias tiptop | ### Alias tiptop | ||
``` bash | ``` bash | ||
- | git config --global alias.s status | + | git config --global alias.s |
- | git config --global alias.who shortlog -sne | + | git config --global alias.who |
- | git config --global alias.changes diff --name-status | + | git config --global alias.changes |
- | git config --global alias.dic diff --cached | + | git config --global alias.dic |
- | git config --global alias.d diff --stat | + | git config --global alias.d |
- | git config --global alias.hist log --pretty=oneline --abbrev-commit --graph --decorate | + | git config --global alias.hist |
- | git config --global alias.lc !git hist ORIG_HEAD.. --stat --no-merges | + | git config --global alias.lc |
- | git config --global alias.amend commit --amend | + | git config --global alias.amend |
- | git config --global alias.undo git reset --soft HEAD^ | + | git config --global alias.undo |
- | git config --global alias.spull !__git_spull() { git pull " | + | git config --global alias.spull |
+ | git config --global alias.spush | ||
``` | ``` | ||
Ligne 274: | Ligne 295: | ||
## git init --bare | ## git init --bare | ||
TODO | TODO | ||
+ | |||
+ | |||
+ | ## Feedback 1er atelier | ||
+ | - need git config user.email & user.name for fresh install | ||
+ | - clone ssh repo may not works out of the box. | ||
+ | - Montrer les schéma avant les definitions | ||
+ | - Atelier de bout en bout git clone to pull | ||
+ | - Atelier de bout en bout fork un repo faire une modif et proposer une PR. | ||
+ | - Demander si on manip en premier ou si on fait les definitions en premier. | ||
+ | - Si peu de manip, definition en premier peut etre bien. | ||
</ | </ |
workshop_git.1711035976.txt.gz · Dernière modification : 2024/03/21 15:46 de bigMax