Commit 0122a887 authored by Elise Maigne's avatar Elise Maigne
Browse files

reformat

parent fb44f48a
......@@ -100,11 +100,6 @@ class: center, middle
<img src="images/vocab3.png", width="90%">
</center>
---
# Exemples
Faire captures d'écrans d'historiques (gitk, github, Rstudio)
---
class: center, middle
......@@ -152,7 +147,7 @@ widgetframe::frameableWidget(gitsteps)
---
# Un commit = un changement
#### 1. On ajoute les modifications au prochain commit avec `git add`
#### 1. On indique à git qu'il doit suivre ces fichiers et on les intègre au prochain commit `git add`
.pull-left[
```{bash, eval=FALSE}
git add *
......@@ -292,13 +287,13 @@ git diff --staged
git diff HEAD
```
![gitdiff](images/gitdiff.png)
---
# Les fichiers git
![fichiers](images/fichiersgit.png)
- Un dossier `.git` : contient tous les fichiers de gestion de version *sur sa machine* (on ne va jamais dedans).
- Un dossier `.git` : contient tous les fichiers de gestion de version (on ne va jamais dedans).
--
......@@ -382,23 +377,45 @@ git branch mabranche
#### Changer de branche
```{bash}
```{bash, eval=FALSE}
git checkout mabranche
git checkout main
```
On ne peut changer de branche uniquement si toutes les modifications sont commitées.
---
# Les branches
#### Fusionner des branches
```{bash, eval=FALSE}
git checkout mabranche
git merge main
```
### Les conflits
Si un fichier est modifié 2 fois au même endroit.
```{bash, eval=FALSE}
<<<<<<< HEAD:fichier.R
J'avais mis ça avant dans ma (vieille) branche
======
Et maintenant j'ai ça, je ne suis qu'un logiciel je ne sais pas quoi faire
>>>>>>> iss53:fichier.R
```
Il faut choisir entre les 2 versions pour pouvoir finaliser le merge
---
# Possibilités (pour des statisticiens)
#### Publication/partage
#### Publication/partage du code
--
#### gitlab pages
Faire des sites webs très facilement ! avec juste un fichier yml à la racine du dépôt
Exemple : j'ai un projet qui crée un fichier html à l'aide de Rmarkdown. --> Si j'active gitlab pages je peux en faire un site web.
(exemple : TODO)
(exemple : https://elise.maigne.pages.mia.inra.fr/2021_git/index.html)
--
......@@ -411,12 +428,48 @@ Par exemple compiler ses Rmd automatiquement.
Un projet "principal" forké (`git fork`) par les étudiants qui partent de la même copie et faire leurs propres modifications, indépendemment les un des autres.
---
# Références
# Vocabulaire
.pull-left[
#### Au démarrage
- `git clone`
- `git fork`
#### Faire des modifications
- `git add` + `git commit -m "Message'`
- `git push`
- `git pull`
#### Visualiser
- `git diff`
- `git blame`
]
.pull-right[
#### Branches
- `git branch`
- `git checkout`
- `git merge`
- `git rebase`
#### Revenir en arrière
- `git revert`
...
]
---
# des questions ?
Lien vers le dépôt de cette présentation :
https://forgemia.inra.fr/elise.maigne/2021_git/
#### Références
Merci aux sites suivants :
- https://perso.liris.cnrs.fr/pierre-antoine.champin/enseignement/intro-git/
- http://rogerdudler.github.io/git-guide/index.fr.html
- Doc de la forgemia : https://forgemia.inra.fr/adminforgemia/doc-public/-/wikis/GIT-sous-Windows
- branches git en graphviz : https://correl.phoenixinquis.net/2015/07/12/git-graphs.html
---
name: bonus
......
......@@ -98,11 +98,6 @@ class: center, middle
&lt;img src="images/vocab3.png", width="90%"&gt;
&lt;/center&gt;
---
# Exemples
Faire captures d'écrans d'historiques (gitk, github, Rstudio)
---
class: center, middle
......@@ -130,17 +125,17 @@ git clone git@forgemia.inra.fr:elise.maigne/2021_git.git
```
&lt;center&gt;
<div id="htmlwidget-8058c2e3f3b47cbdbe84" style="width:504px;height:108px;" class="grViz html-widget"></div>
<div id="htmlwidget-5cc56b7dbafb6355347c" style="width:504px;height:108px;" class="grViz html-widget"></div>
<script>HTMLWidgets.pymChild = new pym.Child();HTMLWidgets.addPostRenderHandler(function(){
setTimeout(function(){HTMLWidgets.pymChild.sendHeight();},100);
});</script>
<script type="application/json" data-for="htmlwidget-8058c2e3f3b47cbdbe84">{"x":{"diagram":"\n digraph {\n rankdir = LR;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#EAEAEA\" fontcolor=\"#822744\" width=2 height=1.5]\n local [label=local penwidth=4]\n remote [label=remote penwidth=4]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n stage [label=stage]\n head [label=HEAD]\n local -> stage -> head -> remote\n }\n","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
<script type="application/json" data-for="htmlwidget-5cc56b7dbafb6355347c">{"x":{"diagram":"\n digraph {\n rankdir = LR;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#EAEAEA\" fontcolor=\"#822744\" width=2 height=1.5]\n local [label=local penwidth=4]\n remote [label=remote penwidth=4]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n stage [label=stage]\n head [label=HEAD]\n local -> stage -> head -> remote\n }\n","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
&lt;/center&gt;
---
# Un commit = un changement
#### 1. On ajoute les modifications au prochain commit avec `git add`
#### 1. On indique à git qu'il doit suivre ces fichiers et on les intègre au prochain commit `git add`
.pull-left[
```bash
......@@ -166,11 +161,11 @@ git commit -m "Ma belle modification"
--
&lt;center&gt;
<div id="htmlwidget-54177900c20fdf7d43ec" style="width:504px;height:108px;" class="grViz html-widget"></div>
<div id="htmlwidget-abc7ef942963400f248a" style="width:504px;height:108px;" class="grViz html-widget"></div>
<script>HTMLWidgets.pymChild = new pym.Child();HTMLWidgets.addPostRenderHandler(function(){
setTimeout(function(){HTMLWidgets.pymChild.sendHeight();},100);
});</script>
<script type="application/json" data-for="htmlwidget-54177900c20fdf7d43ec">{"x":{"diagram":"\n digraph {\n rankdir = TB;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#c98399\" fontcolor=\"#822744\" width=2 height=1.5]\n local [label=local penwidth=4]\n stage [label=stage]\n head [label=HEAD]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n remote [label=remote penwidth=4]\n local -> stage [label = add fontsize=30]\n stage -> head [label=commit fontsize=30]\n head -> remote\n {rank = same; local; stage; head; remote;}; \n }","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
<script type="application/json" data-for="htmlwidget-abc7ef942963400f248a">{"x":{"diagram":"\n digraph {\n rankdir = TB;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#c98399\" fontcolor=\"#822744\" width=2 height=1.5]\n local [label=local penwidth=4]\n stage [label=stage]\n head [label=HEAD]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n remote [label=remote penwidth=4]\n local -> stage [label = add fontsize=30]\n stage -> head [label=commit fontsize=30]\n head -> remote\n {rank = same; local; stage; head; remote;}; \n }","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
&lt;/center&gt;
--
......@@ -193,11 +188,11 @@ git push
```
&lt;center&gt;
<div id="htmlwidget-8694e8f1ebc456756630" style="width:504px;height:108px;" class="grViz html-widget"></div>
<div id="htmlwidget-cdece735de8a114293ba" style="width:504px;height:108px;" class="grViz html-widget"></div>
<script>HTMLWidgets.pymChild = new pym.Child();HTMLWidgets.addPostRenderHandler(function(){
setTimeout(function(){HTMLWidgets.pymChild.sendHeight();},100);
});</script>
<script type="application/json" data-for="htmlwidget-8694e8f1ebc456756630">{"x":{"diagram":"\n digraph {\n rankdir = TB;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#c98399\" fontcolor=\"#822744\" width=2 height=1.5]\n head [label=HEAD]\n remote [label=remote penwidth=4]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n local [label=local penwidth=4]\n stage [label=stage]\n local -> stage -> head\n head -> remote [label = push fontsize=30]\n {rank = same; local; stage; head; remote;}; \n }","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
<script type="application/json" data-for="htmlwidget-cdece735de8a114293ba">{"x":{"diagram":"\n digraph {\n rankdir = TB;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#c98399\" fontcolor=\"#822744\" width=2 height=1.5]\n head [label=HEAD]\n remote [label=remote penwidth=4]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n local [label=local penwidth=4]\n stage [label=stage]\n local -> stage -> head\n head -> remote [label = push fontsize=30]\n {rank = same; local; stage; head; remote;}; \n }","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
&lt;/center&gt;
#### Récupération de l'état du remote
......@@ -207,11 +202,11 @@ git pull
```
&lt;center&gt;
<div id="htmlwidget-fca298e3d30c5a7f17fa" style="width:504px;height:108px;" class="grViz html-widget"></div>
<div id="htmlwidget-5e94141788e0752f98ef" style="width:504px;height:108px;" class="grViz html-widget"></div>
<script>HTMLWidgets.pymChild = new pym.Child();HTMLWidgets.addPostRenderHandler(function(){
setTimeout(function(){HTMLWidgets.pymChild.sendHeight();},100);
});</script>
<script type="application/json" data-for="htmlwidget-fca298e3d30c5a7f17fa">{"x":{"diagram":"\n digraph {\n rankdir = TB;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#c98399\" fontcolor=\"#822744\" width=2 height=1.5]\n local [label=local penwidth=4]\n remote [label=remote penwidth=4]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n head [label=HEAD]\n stage [label=stage]\n local -> stage -> head -> remote\n remote -> local [label = pull fontsize=30 constraint=false]\n {rank = same; local; stage; head; remote;}; \n }","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
<script type="application/json" data-for="htmlwidget-5e94141788e0752f98ef">{"x":{"diagram":"\n digraph {\n rankdir = TB;\n bgcolor = \"#EAEAEA\";\n edge [minlen = 3]\n node [fontsize=40 shape=cylinder style=filled color=\"#822744\" fillcolor=\"#c98399\" fontcolor=\"#822744\" width=2 height=1.5]\n local [label=local penwidth=4]\n remote [label=remote penwidth=4]\n node [fontcolor=\"#b0b0b0\" color=\"#b0b0b0\" fillcolor = \"#ededed\"]\n head [label=HEAD]\n stage [label=stage]\n local -> stage -> head -> remote\n remote -> local [label = pull fontsize=30 constraint=false]\n {rank = same; local; stage; head; remote;}; \n }","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
&lt;/center&gt;
---
......@@ -249,13 +244,13 @@ git diff --staged
git diff HEAD
```
![gitdiff](images/gitdiff.png)
---
# Les fichiers git
![fichiers](images/fichiersgit.png)
- Un dossier `.git` : contient tous les fichiers de gestion de version *sur sa machine* (on ne va jamais dedans).
- Un dossier `.git` : contient tous les fichiers de gestion de version (on ne va jamais dedans).
--
......@@ -287,22 +282,22 @@ Il est possible de créer de nouvelles branches, pour tester une autre direction
.pull-left[
Projet d'application à plusieurs, 1 branche = 1 fonctionalité, plusieurs fonctionalités en même temps.
<div id="htmlwidget-87e73a26b95ede5e072e" style="width:504px;height:288px;" class="grViz html-widget"></div>
<div id="htmlwidget-02e01ef025b27a7b349c" style="width:504px;height:288px;" class="grViz html-widget"></div>
<script>HTMLWidgets.pymChild = new pym.Child();HTMLWidgets.addPostRenderHandler(function(){
setTimeout(function(){HTMLWidgets.pymChild.sendHeight();},100);
});</script>
<script type="application/json" data-for="htmlwidget-87e73a26b95ede5e072e">{"x":{"diagram":"\ndigraph {\n\trankdir=\"LR\";\n\tbgcolor=\"transparent\";\n\tnode[width=0.15, height=0.15, shape=point, color=\"#822744\"];\n\tedge[weight=2, arrowhead=none, color=\"#822744\"];\n\tnode[group=master];\n\t1 -> 2 -> 3 -> 4 -> 5;\n\tnode[group=branch];\n\t2 -> 6 -> 7 -> 4;\n\tnode[group=branch];\n\t2 -> 8 -> 9 -> 10;\n\tnode[group=branch];\n\t2 -> 11 -> 12 -> 13 -> 14 -> 15;\n}","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
<script type="application/json" data-for="htmlwidget-02e01ef025b27a7b349c">{"x":{"diagram":"\ndigraph {\n\trankdir=\"LR\";\n\tbgcolor=\"transparent\";\n\tnode[width=0.15, height=0.15, shape=point, color=\"#822744\"];\n\tedge[weight=2, arrowhead=none, color=\"#822744\"];\n\tnode[group=master];\n\t1 -> 2 -> 3 -> 4 -> 5;\n\tnode[group=branch];\n\t2 -> 6 -> 7 -> 4;\n\tnode[group=branch];\n\t2 -> 8 -> 9 -> 10;\n\tnode[group=branch];\n\t2 -> 11 -> 12 -> 13 -> 14 -> 15;\n}","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
]
--
.pull-right[
Développement d'un package R : une branche correspond à une modification majeure du code. La branche main est toujours supposée tourner.
<div id="htmlwidget-43125fe2215f3890b2c9" style="width:504px;height:288px;" class="grViz html-widget"></div>
<div id="htmlwidget-54b374d1f85eef52165d" style="width:504px;height:288px;" class="grViz html-widget"></div>
<script>HTMLWidgets.pymChild = new pym.Child();HTMLWidgets.addPostRenderHandler(function(){
setTimeout(function(){HTMLWidgets.pymChild.sendHeight();},100);
});</script>
<script type="application/json" data-for="htmlwidget-43125fe2215f3890b2c9">{"x":{"diagram":"\ndigraph {\n\trankdir=\"LR\";\n\tbgcolor=\"transparent\";\n\tnode[width=0.15, height=0.15, shape=point, color=\"#822744\"];\n\tedge[weight=2, arrowhead=none, color=\"#822744\"];\n\tnode[group=master];\n\t1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8;\n\tnode[group=branch];\n\t2 -> 9 -> 10 -> 11 -> 3;\n\tnode[group=branch];\n\t5 -> 12 -> 13 -> 14 -> 6;\n}","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
<script type="application/json" data-for="htmlwidget-54b374d1f85eef52165d">{"x":{"diagram":"\ndigraph {\n\trankdir=\"LR\";\n\tbgcolor=\"transparent\";\n\tnode[width=0.15, height=0.15, shape=point, color=\"#822744\"];\n\tedge[weight=2, arrowhead=none, color=\"#822744\"];\n\tnode[group=master];\n\t1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8;\n\tnode[group=branch];\n\t2 -> 9 -> 10 -> 11 -> 3;\n\tnode[group=branch];\n\t5 -> 12 -> 13 -> 14 -> 6;\n}","config":{"engine":"dot","options":null}},"evals":[],"jsHooks":[]}</script>
]
---
......@@ -323,26 +318,42 @@ git checkout mabranche
git checkout main
```
On ne peut changer de branche uniquement si toutes les modifications sont commitées.
---
# Les branches
#### Fusionner des branches
```bash
git checkout mabranche
git merge main
```
## error: pathspec 'mabranche' did not match any file(s) known to git.
## Déjà sur 'main'
## M presentation.Rmd
## M presentation.html
## Votre branche est à jour avec 'origin/main'.
### Les conflits
Si un fichier est modifié 2 fois au même endroit.
```bash
&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:fichier.R
J'avais mis ça avant dans ma (vieille) branche
======
Et maintenant j'ai ça, je ne suis qu'un logiciel je ne sais pas quoi faire
&gt;&gt;&gt;&gt;&gt;&gt;&gt; iss53:fichier.R
```
On ne peut changer de branche uniquement si toutes les modifications sont commitées.
Il faut choisir entre les 2 versions pour pouvoir finaliser le merge
---
# Possibilités (pour des statisticiens)
#### Publication/partage
#### Publication/partage du code
--
#### gitlab pages
Faire des sites webs très facilement ! avec juste un fichier yml à la racine du dépôt
Exemple : j'ai un projet qui crée un fichier html à l'aide de Rmarkdown. --&gt; Si j'active gitlab pages je peux en faire un site web.
(exemple : TODO)
(exemple : https://elise.maigne.pages.mia.inra.fr/2021_git/index.html)
--
......@@ -355,12 +366,48 @@ Par exemple compiler ses Rmd automatiquement.
Un projet "principal" forké (`git fork`) par les étudiants qui partent de la même copie et faire leurs propres modifications, indépendemment les un des autres.
---
# Références
# Vocabulaire
.pull-left[
#### Au démarrage
- `git clone`
- `git fork`
#### Faire des modifications
- `git add` + `git commit -m "Message'`
- `git push`
- `git pull`
#### Visualiser
- `git diff`
- `git blame`
]
.pull-right[
#### Branches
- `git branch`
- `git checkout`
- `git merge`
- `git rebase`
#### Revenir en arrière
- `git revert`
...
]
---
# des questions ?
Lien vers le dépôt de cette présentation :
https://forgemia.inra.fr/elise.maigne/2021_git/
#### Références
Merci aux sites suivants :
- https://perso.liris.cnrs.fr/pierre-antoine.champin/enseignement/intro-git/
- http://rogerdudler.github.io/git-guide/index.fr.html
- Doc de la forgemia : https://forgemia.inra.fr/adminforgemia/doc-public/-/wikis/GIT-sous-Windows
- branches git en graphviz : https://correl.phoenixinquis.net/2015/07/12/git-graphs.html
---
name: bonus
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment