diff --git a/GitHubIntroSlides/Figure1.png b/GitHubIntroSlides/Figure1.png new file mode 100644 index 0000000..790565c Binary files /dev/null and b/GitHubIntroSlides/Figure1.png differ diff --git a/GitHubIntroSlides/Figure10.gif b/GitHubIntroSlides/Figure10.gif new file mode 100644 index 0000000..721323e Binary files /dev/null and b/GitHubIntroSlides/Figure10.gif differ diff --git a/GitHubIntroSlides/Figure10.png b/GitHubIntroSlides/Figure10.png new file mode 100644 index 0000000..4cb5488 Binary files /dev/null and b/GitHubIntroSlides/Figure10.png differ diff --git a/GitHubIntroSlides/Figure11.jpg b/GitHubIntroSlides/Figure11.jpg new file mode 100644 index 0000000..6a0c763 Binary files /dev/null and b/GitHubIntroSlides/Figure11.jpg differ diff --git a/GitHubIntroSlides/Figure2.png b/GitHubIntroSlides/Figure2.png new file mode 100644 index 0000000..413b723 Binary files /dev/null and b/GitHubIntroSlides/Figure2.png differ diff --git a/GitHubIntroSlides/Figure3.png b/GitHubIntroSlides/Figure3.png new file mode 100644 index 0000000..3f35d2d Binary files /dev/null and b/GitHubIntroSlides/Figure3.png differ diff --git a/GitHubIntroSlides/Figure4.png b/GitHubIntroSlides/Figure4.png new file mode 100644 index 0000000..333c355 Binary files /dev/null and b/GitHubIntroSlides/Figure4.png differ diff --git a/GitHubIntroSlides/Figure5.png b/GitHubIntroSlides/Figure5.png new file mode 100644 index 0000000..155b218 Binary files /dev/null and b/GitHubIntroSlides/Figure5.png differ diff --git a/GitHubIntroSlides/Figure6.png b/GitHubIntroSlides/Figure6.png new file mode 100644 index 0000000..10b40c2 Binary files /dev/null and b/GitHubIntroSlides/Figure6.png differ diff --git a/GitHubIntroSlides/Figure8.png b/GitHubIntroSlides/Figure8.png new file mode 100644 index 0000000..e775298 Binary files /dev/null and b/GitHubIntroSlides/Figure8.png differ diff --git a/GitHubIntroSlides/Figure9.png b/GitHubIntroSlides/Figure9.png new file mode 100644 index 0000000..8d1c299 Binary files /dev/null and b/GitHubIntroSlides/Figure9.png differ diff --git a/GitHubIntroSlides/GitHubIntro.Rmd b/GitHubIntroSlides/GitHubIntro.Rmd new file mode 100644 index 0000000..e556d9c --- /dev/null +++ b/GitHubIntroSlides/GitHubIntro.Rmd @@ -0,0 +1,367 @@ +--- +title: "Introducción a GitHub para R" +output: + ioslides_presentation: + fig_width: 7 + fig_height: 6 +--- + + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = FALSE) +``` + + +## Agradecimientos + +- Este documento se basa en "Happy Git with R" de Jenny Bryan, los STAT 545 TAs, Jim Hester + + +https://happygitwithr.com + + +## Por qué hacer control de versiones de nuestros proyectos? + +- Los proyectos suelen cambiar y crecer. +- Es difícil saber cuáles fueron todos los cambios a lo largo del tiempo (en especial tiempos largos, hazlo por tu yo del futuro!). +- Las colaboraciones se pueden complicar sin un buen control de versiones. +- Seguridad + +## Por qué hacer control de versiones de nuestros proyectos? + +```{r, out.width = '40%'} +knitr::include_graphics('Figure10.png') +``` + +## Git + +- Git es un sistema de control de versiones. +- Git funciona con GitHub, Bitbucket o GitLab +- Por qué usar Git en vez de solo renombrar los archivos? + +Por que es mejor tener una filogenia del archivo + +```{r, out.width = '60%'} +knitr::include_graphics('Figure4.png') +``` + + +## Versión de controles a mano + +```{r, fig.cap="Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017", out.width = '50%'} +knitr::include_graphics('Figure5.png') +``` + +## Versión de control en Git + +```{r, fig.cap="Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017", out.width = '80%'} +knitr::include_graphics('Figure1.png') +``` + +## Versión de control en Git + +- Con Git cada contribuidor tiene una copia del repositorio central, con todos los archivos y la historia de los cambios por los que han pasado. + +```{r, fig.cap="Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017", out.width = '60%'} +knitr::include_graphics('Figure6.png') +``` + +## GitHub + +- GitHub es una plataforma que permite guardar código en forma de repositorios Git. + + +```{r, out.width = '80%'} +knitr::include_graphics('Figure8.png') +``` + + + +## Qué necesitamos para que esto funcione? + +- Necesitamos Git en la computadora +- Necesitamos que Git en nuestra computadora le hable a GitHub (o el repositorio que quieran usar, pude ser GitLab, Bitbucket, etc). +- Luego necesitamos que R hable con este repositorio. + + +## Recomendaciones para sus proyectos + +- Dedicar un directorio +- Es mejor organizarlo en un RStudio Project +- Hacer un repositorio de Git +- Trabajen como siempre, solo además de guardar, recuerden hacer commit +- De vez en vez hagan push de sus cambios cuando los hayan **verificado**. + +## Proyectos colaborativos + +- GitHub se parece más a un GoogleDoc que a un Word Document. +- Es fácil que los colaboradores hagan cambios y también es fácil saber quién hizo que. +- El owner del proyecto puede dar permisos a los diferentes colaboradores. +- También existen organizaciones, esto puede ser útil para manejar los permisos de grupos grandes de colaboración. + +## Detalles especiales de GitHub + +- Issues: Issue reports, es fácil saber de dónde vino un reporte y si se arregló. +- Pull requests: Los usuarios pueden solicitar contribuir y hacer cambios. + +## R in GitHub + +- La comunidad de R es muy activa en GitHub. +- Hay muchos paquetes ahí. +- Al ser parte de GitHub será más fácil que su código se utilice por la comunidad. +- GitHub y RStudio se conectan muy bien. +- Si R no es su lenguaje favorito, también se pueden beneficiar de usar Rstudio para manejar su repositorio. + +## Ahora, a darle! + +- Ya tenemos R y RStudio. +- Necesitamos una cuenta en GitHub, registren una si no tienen. +- Ahora vamos a: + - Revisar la instalación de Git + - Familiarizarnos con GitHub + - Conectarnos a GitHub + +## Instalación de Git + +- Como parte de los requerimientos les pedimos tener Git. +- Pueden revisar si todo está bien con el siguiente comando en su terminal: + +```{bash eval=FALSE, echo=TRUE} +which git +git --version +``` + + +- Si no lo tienen instalado: +- MAC: Usen Xcode. +- Linux: Usen apt-get o yum para instalar git +- Windows: [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) + +## Ahora con GitHub! +- Hagan login y creen un repositorio nuevo +- Denle nombre: en mi caso use MiRepo +- Añadan una descripción: My mini repo +- Inicialicen el repositorio con un README +- Para lo demás usen los defaults +- Den Click en "Create repository" + +## Traer el repositorio a nuestras compus +- Ya tenemos el repositorio en GitHub +- Para de verdad poderlo usar, lo tenemos que traer a nuestras computadoras, Clonenlo! +- Copien la liga en "Clone or download" + +```{bash eval=FALSE, echo=TRUE} +which git +git clone https://mylink.com/you/your_repo +``` + +## Usemos el repositorio! + +- Vamos a usar el repositorio como nuestro lugar de trabajo: + +```{bash eval=FALSE, echo=TRUE} +cd myrepo +ls -la +head README.md +git remote show origin + +``` + +- Qué nos dice este comando? + +## Usemos el repositorio! + +- Probemos haciendo un cambio en el README + +```{bash eval=FALSE, echo=TRUE} +echo "Something I want to add to the README in my local computer" >> README.md +git status +``` + +- Qué pasó? + +- Ahora tenemos que decirle a git que queremos seguir los cambios de ese archivo +- Vamos a *commit* los cambios y luego a subir (*push*) los mismos a GitHub + +```{bash eval=FALSE, echo=TRUE} +git add README.md +git commit -m "A commit from my local computer" +git push +``` + +## Usemos el repositorio! + +- Add es algo que se hace la primera vez que se usa un archivos. Con la opción -A se agregan todos los archivos de un folder. +- Piensen bien antes de hacer eso! a veces no queremos todos los archivos en un folder. +- Usen mensajes INFORMATIVOS en los commits, pude ser información muy útil en el futuro. +- Ahora verifica si los cambios se subieron a GitHub + +## Credenciales en Git + +- Algunas instalaciones de Git son muy listas y guardan el username y password, así que no lo tenemos que poner en cada push. +- Si por algo no está funcionando + +Pueden seguir estos tutoriales para arreglarlo +https://happygitwithr.com/credential-caching.html + +-Les recomiendo revisar cómo hacer conecciones con llaves ssh. +GitHub se mueve a establecerlo como standar +https://happygitwithr.com/ssh-keys.html + +## Conectando Git y RStudio +- Hasta ahora todo lo de Git ha sido en línea de comando +- Pero RStudio nos puede ayudar con esto +- Para lograrlo, primero necesitamos que RStudio se conecte con Git +1. Crea un proyecto en RStudio desde un repositorio de Git. +File > New Project > Version Control > Git +2. En dónde vas a guardar ese repositorio? +3. Lo logramos! Git va a aparecer en la esquina superior derecha +4. Hagamos un cambio en el README + +## Commit y push en RStudio +Desde RStudio: + +- Da click en el “Git” tab el panel superior derecho. +- Haz click en “Staged” para README.md. +- Da click en “Commit”. +- Escribe un mensaje útil en “Commit message”. +- Click “Commit”. +- Click "push" + +## Rmarkdown + +- Son archivos con extensión .Rmd +- Nos permiten documentar de forma sencilla nuestro código + +```{r, out.width = '60%'} +knitr::include_graphics('Figure9.png') +``` + + + +## Rmarkdown en GitHub + +- Creemos un Rmakrdown y subámoslo a GitHub +- Ahora hay que agregarlo al repositorio (add), stage and commit. +- Subieron el hmlt? Qué tal se ve? +- No se ve como queremos, verdad? Para eso necesitamos recuperar el .md. El .md es un resultado intermedio de crear el html desde Rmd. +- Tenemos que cambiar el header para esto + +```{r echo=TRUE, eval=FALSE} +--- +title: "RmarkwondTest" +output: + html_document: + keep_md: true +--- +``` + +## Si les gustó Rmarkdown + +```{r, out.width = '100%'} +knitr::include_graphics('Figure11.jpg') +``` + + +## Git basics: commands + +- Qué pasó? +- Qué hacemos ahora? +- Ahora ya tienes todo para subir tus cosas a GitHub y documentarlas bonito! + +## Git basics: Repository, diff + +- Un repository o repo es un grupo de archivos manejado por Git +```{r, fig.cap="https://happygitwithr.com/git-basics.html", out.width = '60%'} +knitr::include_graphics('Figure2.png') +``` + +## Git basics: commands +- Clone +```{bash eval=FALSE, echo=TRUE} +git clone https://repor.com +``` + +- Agregar un archivo al repo (solo una vez) y hacer commit +```{bash eval=FALSE, echo=TRUE} +git add newfile.R +git commit -m "mensaje informativo" newfile.R +``` +## Git basics: commands + +- Qué pasó? +```{bash eval=FALSE, echo=TRUE} +git status +git log +git log --oneline +``` + +- Comparar versiones +```{bash eval=FALSE, echo=TRUE} +git diff +git diff myfile.R +``` +## Git basics: commands + +- Push +```{bash eval=FALSE, echo=TRUE} +git push +``` + +- Pull y pull evitando conflictos de merge (Fusión!) +```{bash eval=FALSE, echo=TRUE} +git pull +git pull --ff-only +``` + +## Git basics: commands + +- Fetch Commits +```{bash eval=FALSE, echo=TRUE} +git fetch +``` + +- Create and Switch to a branch +```{bash eval=FALSE, echo=TRUE} +git branch [branch-name] +git checkout [branch-name] +``` + +## Merge conflics +- A veces, no tan a veces también, las cosas no salen bien a la primera +- Merging (Fusionar) es una de esas cosas +- Cuando bajamos un cambio o fusionamos branches esto puede pasar. +- Primera regla: NO ENTRAR EN PANICO!!! +- Revisen el status del repositorio. Qué archivo tiene conflicto? + +## Merge conflics + +- Abran ese archivo y busquen los problemas de merge. Es fácil, se ven así: + +```{r echo=TRUE, eval=FALSE} +<<<<<<< HEAD:index.html + +======= + +>>>>>>> issue-5:index.html +``` + +- Editen esa sección, dejen una versión final. +- Hagan commit y push +- Si entran en pánico? Aborten la misión! + +```{bash eval=FALSE, echo=TRUE} +git merge --abort t +``` + +## En resumen + +```{r, fig.cap="https://xkcd.com", out.width = '40%'} +knitr::include_graphics('Figure3.png') +``` diff --git a/GitHubIntroSlides/GitHubIntro.html b/GitHubIntroSlides/GitHubIntro.html new file mode 100644 index 0000000..c1e3612 --- /dev/null +++ b/GitHubIntroSlides/GitHubIntro.html @@ -0,0 +1,3562 @@ + + + + Introducción a GitHub para R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+

+

+
+
+ + + +

Agradecimientos

+ +
    +
  • Este documento se basa en “Happy Git with R” de Jenny Bryan, los STAT 545 TAs, Jim Hester
  • +
+ +

https://happygitwithr.com

+ +

Por qué hacer control de versiones de nuestros proyectos?

+ +
    +
  • Los proyectos suelen cambiar y crecer.
  • +
  • Es difícil saber cuáles fueron todos los cambios a lo largo del tiempo (en especial tiempos largos, hazlo por tu yo del futuro!).
  • +
  • Las colaboraciones se pueden complicar sin un buen control de versiones.
  • +
+ +

Por qué hacer control de versiones de nuestros proyectos?

+ +

+ +

Git

+ +
    +
  • Git es un sistema de control de versiones.
  • +
  • Git funciona con GitHub, Bitbucket o GitLab
  • +
  • Por qué usar Git en vez de solo renombrar los archivos? Por que es mejor tener una filogenia del archivo
  • +
+ +

+ +

Versión de controles a mano

+ +
+Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 + +

+ +Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 + +

+ +

Versión de control en Git

+ +
+Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 + +

+ +Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 + +

+ +

Versión de control en Git

+ +
    +
  • Con Git cada contribuidor tiene una copia del repositorio central, con todos los archivos y la historia de los cambios por los que han pasado.
  • +
+ +
+Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 + +

+ +Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 + +

+ +

GitHub

+ +
    +
  • GitHub es una plataforma que permite guardar código en forma de repositorios Git.
  • +
+ +

+ +

Qué necesitamos para que esto funcione?

+ +
    +
  • Necesitamos Git en la computadora
  • +
  • Necesitamos que Git en nuestra computadora le hable a GitHub (o el repositorio que quieran usar, pude ser GitLab, Bitbucket, etc).
  • +
  • Luego necesitamos que R hable con este repositorio.
  • +
+ +

Recomendaciones para sus proyectos

+ +
    +
  • Dedicar un directorio
  • +
  • Es mejor organizarlo en un RStudio Project
  • +
  • Hacer un repositorio de Git
  • +
  • Trabajen como siempre, solo además de guardar, recuerden hacer commit
  • +
  • De vez en vez hagan push de sus cambios cuando los hayan verificado.
  • +
+ +

Proyectos colaborativos

+ +
    +
  • GitHub se parece más a un GoogleDoc que a un Word Document.
  • +
  • Es fácil que los colaboradores hagan cambios y también es fácil saber quién hizo que.
  • +
  • El owner del proyecto puede dar permisos a los diferentes colaboradores.
  • +
  • También existen organizaciones, esto puede ser útil para manejar los permisos de grupos grandes de colaboración.
  • +
+ +

Detalles especiales de GitHub

+ +
    +
  • Issues: Issue reports, es fácil saber de dónde vino un reporte y si se arregló.
  • +
  • Pull requests: Los usuarios pueden solicitar contribuir y hacer cambios.
  • +
+ +

R in GitHub

+ +
    +
  • La comunidad de R es muy activa en GitHub.
  • +
  • Hay muchos paquetes ahí.
  • +
  • Al ser parte de GitHub será más fácil que su código se utilice por la comunidad.
  • +
  • GitHub y RStudio se conectan muy bien.
  • +
  • Si R no es su lenguaje favorito, también se pueden beneficiar de usar Rstudio para manejar su repositorio.
  • +
+ +

Ahora, a darle!

+ +
    +
  • Ya tenemos R y RStudio.
  • +
  • Necesitamos una cuenta en GitHub, registren una si no tienen.
  • +
  • Ahora vamos a: + +
      +
    • Revisar la instalación de Git
    • +
    • Familiarizarnos con GitHub
    • +
    • Conectarnos a GitHub
    • +
  • +
+ +

Instalación de Git

+ +
    +
  • Como parte de los requerimientos les pedimos tener Git.
  • +
  • Pueden revisar si todo está bien con el siguiente comando en su terminal:
  • +
+ +
which git
+git --version
+ +
    +
  • Si no lo tienen instalado:
  • +
  • MAC: Usen Xcode.
  • +
  • Linux: Usen apt-get o yum para instalar git
  • +
  • Windows: here
  • +
+ +

Ahora con GitHub!

+ +
    +
  • Hagan login y creen un repositorio nuevo
  • +
  • Denle nombre: en mi caso use MiRepo
  • +
  • Añadan una descripción: My mini repo
  • +
  • Inicialicen el repositorio con un README
  • +
  • Para lo demás usen los defaults
  • +
  • Den Click en “Create repository”
  • +
+ +

Traer el repositorio a nuestras compus

+ +
    +
  • Ya tenemos el repositorio en GitHub
  • +
  • Para de verdad poderlo usar, lo tenemos que traer a nuestras computadoras, Clonenlo!
  • +
  • Copien la liga en “Clone or download”
  • +
+ +
which git
+git clone https://mylink.com/you/your_repo
+ +

Usemos el repositorio!

+ +
    +
  • Vamos a usar el repositorio como nuestro lugar de trabajo:
  • +
+ +
cd myrepo
+ls -la
+head README.md
+git remote show origin
+
+ +
    +
  • Qué nos dice este comando?
  • +
+ +

Usemos el repositorio!

+ +
    +
  • Probemos haciendo un cambio en el README
  • +
+ +
echo "Something I want to add to the README in my local computer" >> README.md
+git status
+ +
    +
  • Qué pasó?

  • +
  • Ahora tenemos que decirle a git que queremos seguir los cambios de ese archivo
  • +
  • Vamos a commit los cambios y luego a subir (push) los mismos a GitHub

  • +
+ +
git add README.md
+git commit -m "A commit from my local computer"
+git push
+ +

Usemos el repositorio!

+ +
    +
  • Add es algo que se hace la primera vez que se usa un archivos. Con la opción -A se agregan todos los archivos de un folder.
  • +
  • Piensen bien antes de hacer eso! a veces no queremos todos los archivos en un folder.
  • +
  • Usen mensajes INFORMATIVOS en los commits, pude ser información muy útil en el futuro.
  • +
  • Ahora verifica si los cambios se subieron a GitHub
  • +
+ +

Credenciales en Git

Conectando Git y RStudio

+ +
    +
  • Hasta ahora todo lo de Git ha sido en línea de comando
  • +
  • Pero RStudio nos puede ayudar con esto
  • +
  • Para lograrlo, primero necesitamos que RStudio se conecte con Git
  • +
+ +
    +
  1. Crea un proyecto en RStudio desde un repositorio de Git. File > New Project > Version Control > Git
  2. +
  3. En dónde vas a guardar ese repositorio?
  4. +
  5. Lo logramos! Git va a aparecer en la esquina superior derecha
  6. +
  7. Hagamos un cambio en el README
  8. +
+ +

Commit y push en RStudio

+ +

Desde RStudio:

+ +
    +
  • Da click en el “Git” tab el panel superior derecho.
  • +
  • Haz click en “Staged” para README.md.
  • +
  • Da click en “Commit”.
  • +
  • Escribe un mensaje útil en “Commit message”.
  • +
  • Click “Commit”.
  • +
  • Click “push”
  • +
+ +

Rmarkdown

+ +
    +
  • Son archivos con extensión .Rmd
  • +
  • Nos permiten documentar de forma sencilla nuestro código
  • +
+ +

+ +

Rmarkdown en GitHub

+ +
    +
  • Creemos un Rmakrdown y subámoslo a GitHub
  • +
  • Ahora hay que agregarlo al repositorio (add), stage and commit.
  • +
  • Subieron el hmlt? Qué tal se ve?
  • +
  • No se ve como queremos, verdad? Para eso necesitamos recuperar el .md. El .md es un resultado intermedio de crear el html desde Rmd.
  • +
  • Tenemos que cambiar el header para esto
  • +
+ +
---
+title: "RmarkwondTest"
+output: 
+  html_document:
+    keep_md: true
+---
+ +

Si les gustó Rmarkdown

+ +

+ +

Git basics: commands

+ +
    +
  • Qué pasó?
  • +
  • Qué hacemos ahora?
  • +
  • Ahora ya tienes todo para subir tus cosas a GitHub y documentarlas bonito!
  • +
+ +

Git basics: Repository, diff

Git basics: commands

+ +
    +
  • Clone
  • +
+ +
git clone https://repor.com
+ +
    +
  • Agregar un archivo al repo (solo una vez) y hacer commit
  • +
+ +
git add newfile.R
+git commit -m "mensaje informativo" newfile.R
+ +

Git basics: commands

+ +
    +
  • Qué pasó?
  • +
+ +
git status
+git log
+git log --oneline
+ +
    +
  • Comparar versiones
  • +
+ +
git diff
+git diff myfile.R
+ +

Git basics: commands

+ +
    +
  • Push
  • +
+ +
git push
+ +
    +
  • Pull y pull evitando conflictos de merge (Fusión!)
  • +
+ +
git pull
+git pull --ff-only
+ +

Git basics: commands

+ +
    +
  • Fetch Commits
  • +
+ +
git fetch
+ +
    +
  • Create and Switch to a branch
  • +
+ +
git branch [branch-name]
+git checkout [branch-name]
+ +

Merge conflics

+ +
    +
  • A veces, no tan a veces también, las cosas no salen bien a la primera
  • +
  • Merging (Fusionar) es una de esas cosas
  • +
  • Cuando bajamos un cambio o fusionamos branches esto puede pasar.
  • +
  • Primera regla: NO ENTRAR EN PANICO!!!
  • +
  • Revisen el status del repositorio. Qué archivo tiene conflicto?
  • +
+ +

Merge conflics

+ +
    +
  • Abran ese archivo y busquen los problemas de merge. Es fácil, se ven así:
  • +
+ +
<<<<<<< HEAD:index.html
+<div id="footer">contact : email.support@github.com</div>
+=======
+<div id="footer">
+ please contact us at support@github.com
+</div>
+>>>>>>> issue-5:index.html
+ +
    +
  • Editen esa sección, dejen una versión final.
  • +
  • Hagan commit y push
  • +
  • Si entran en pánico? Aborten la misión!
  • +
+ +
git merge --abort t
+ +

En resumen

+ + + + +
+ + + + + + + + +