Outils pour utilisateurs

Outils du site


workshop_git

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
workshop_git [2024/03/21 15:46] bigMaxworkshop_git [2024/04/03 07:49] (Version actuelle) bigMax
Ligne 32: Ligne 32:
 ``` bash ``` bash
 git clone git@github.com:mxbossard/mass.git git clone git@github.com:mxbossard/mass.git
 +git clone https://github.com/mxbossard/mass.git
 +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" qui lit un commit et l'affiche dans notre repertoire de travail.
 +- pathspec : expression representant un ou plusieurs chemins de fichier dans un dépôt
 +- tree-ish : expression représentant un tree (ex: HEAD:README.md) (ex: HEAD) (les commits et tags sont déréférencés pour l'arbre vers lequel ils pointent)
 +- 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 "mouvant" auquel on attache son working tree
  
 ## 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" qui lit un commit et l'affiche dans notre repertoire de travail. 
-- pathspec : expression representant un ou plusieurs chemins de fichier dans un dépôt 
-- tree-ish : expression représentant un tree (ex: HEAD:README.md) (ex: HEAD) (les commits et tags sont déréférencés pour l'arbre vers lequel ils pointent) 
-- 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 "mouvant" vers un commit 
  
 ## Fonctionnement ## Fonctionnement
 ### Interne ### Interne
-[Documentation Git Internals - Git Objects](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects) 
- 
 </markdown> </markdown>
 {{ :media_12:git_index_tree_blob.png?direct&800 |}} {{ :media_12:git_index_tree_blob.png?direct&800 |}}
 <markdown> <markdown>
 +[Documentation Git Internals - Git Objects](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects)
  
 ### 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)
 +
 </markdown> </markdown>
-{{ :media_12:git_layers_and_commands.jpg?direct&800 |}}+{{ :media_12:git_layers_and_commands.jpg?direct&600 |}}
 <markdown> <markdown>
  
Ligne 102: Ligne 104:
  
 ### Branch ### Branch
-TODO +Une branche pointe vers un commit, mais à la différence du tag, on "travail sur une branche". Cela veut dire que notre espace de travail (working dir) est en général accroché sur une branche. Lorsque l'on effectue un commit, ce commit est attaché à la branche, et devient le dernier commit de la branche.
- +
-### Tags +
-TODO+
  
 </markdown> </markdown>
-{{ :media_12:git_commits_tree_branches_tags.png?direct&800 |}}+{{ :media_12:git_commits_tree_branches_tags.png?direct&600 |}}
 <markdown> <markdown>
  
 ### 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. 
-TODOimage+ 
 +</markdown> 
 +{{ :media_12:git_diff_sample_2.png?direct&600 |}} 
 +<markdown>
  
 ## 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:labomedia/foo.git
 git remote git remote
 git remote -v git remote -v
-git push+git branch -M main 
 +git push -uf origin main 
 +```
  
 +Visit URL: https://framagit.org/labomedia/foo.git
  
 ## Quoi commit ? ## Quoi commit ?
Ligne 217: Ligne 227:
 ## Merge vs Rebase ? ## Merge vs Rebase ?
 Débat d'ordre philosophique non tranchable. Cela dépend des pratiques de chacun, de l'équipe et du workflow de travail. Débat d'ordre philosophique non tranchable. Cela dépend des pratiques de chacun, de l'équipe et du workflow de travail.
 +
 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'historique. Les 2 opérations different dans la manière de réaliser cette fusion dans l'historique.
  
-TODO image+</markdown> 
 +{{ :media_12:git_merge_vs_rebase.jpeg?direct&600 |}} 
 +<markdown> 
 ### Merge ### Merge
 Ne modifie pas l'historique et ajoute un nouveau commit dans la branch accueillant la fusion. Ne modifie pas l'historique et ajoute un nouveau commit dans la branch accueillant la fusion.
-TODO image 
  
 ### Rebase ### Rebase
 Modifie l'historique afin de faire démarrer la branch fusionné à la fin de la branche accuillant la fusion. Modifie l'historique afin de faire démarrer la branch fusionné à la fin de la branche accuillant la fusion.
-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'accord sur un procéssus - Pour travailler seul et surtout a plusieurs nécéssaire de se mettre d'accord sur un procéssus
-TODOExpliquer git flow+</markdown> 
 +{{ :media_12:gitflow_1.webp |}} 
 +<markdown> 
 +[Une doc en français](https://mindsers.blog/fr/post/gitflow-la-methodologie-et-la-pratique/
 +[Une doc fr du plugin git-flow](https://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html)
  
 ### Autres ### Autres
 TODO: Linker d'autres git flows TODO: Linker d'autres git flows
  
 +
 +## 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 "status" 
-git config --global alias.who shortlog -sne +git config --global alias.who "shortlog -sne" 
-git config --global alias.changes diff --name-status +git config --global alias.changes "diff --name-status" 
-git config --global alias.dic diff --cached +git config --global alias.dic "diff --cached" 
-git config --global alias.d diff --stat +git config --global alias.d "diff --stat" 
-git config --global alias.hist log --pretty=oneline --abbrev-commit --graph --decorate +git config --global alias.hist "log --pretty=oneline --abbrev-commit --graph --decorate" 
-git config --global alias.lc !git hist ORIG_HEAD.. --stat --no-merges +git config --global alias.lc \!"git hist ORIG_HEAD.. --stat --no-merges" 
-git config --global alias.amend commit --amend +git config --global alias.amend "commit --amend" 
-git config --global alias.undo git reset --soft HEAD^ +git config --global alias.undo "git reset --soft HEAD^" 
-git config --global alias.spull !__git_spull() { git pull "$@" && git submodule sync --recursive && git submodule update --init --recursive --remote; }; __git_spullgit config --global alias.spush push --recurse-submodules=on-demand+git config --global alias.spull \!"__git_spull() { git pull "$@" && git submodule sync --recursive && git submodule update --init --recursive --remote; }; __git_spull" 
 +git config --global alias.spush "push --recurse-submodules=on-demand"
 ``` ```
  
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.
  
 </markdown> </markdown>
workshop_git.1711035976.txt.gz · Dernière modification : 2024/03/21 15:46 de bigMax