15  Nuevo proyecto, GitHub primero

Creamos un nuevo Proyecto, con la secuencia preferida “Primero GitHub, luego RStudio”. ¿Por qué preferimos esto? Porque este método de copiar el proyecto desde GitHub a su computadora también configura el repositorio local de Git para su importación y envío inmediato. Debajo del capó, estamos haciendo “git clone”.

De hecho, ya hiciste esto antes durante la configuración (Capítulo 12). Lo volvemos a hacer, con sentimiento.

El flujo de trabajo es bastante similar para otros administradores de repositorios como GitLab o Bitbucket. A continuación especificaremos cuándo es posible que necesite hacer algo diferente.

15.1 Hacer un repositorio en GitHub

Vaya a https://github.com y asegúrese de haber iniciado sesión.

Cerca de “Repositorios”, haga clic en el gran botón verde “Nuevo”. O, si está en su propia página de perfil, haga clic en “Repositorios” y luego haga clic en el gran botón verde “Nuevo”.

Cómo completar esto:

  • Plantilla de repositorio: sin plantilla.
  • Nombre del repositorio: <<>>
  • Descripción: <<>>
  • Público.
  • <<>>

Haga clic en el gran botón verde que dice “Crear repositorio”.

Ahora haga clic en el gran botón verde que dice “<> Code”.

Copie una URL clonada a su portapapeles. Si sigue nuestro consejo predeterminado, copie la URL HTTPS. Pero si opta por SSH, asegúrese de copiar la URL de SSH.

Selecting an HTTPS vs SSH URL on GitHub

15.1.1 GitLab

Inicie sesión en https://gitlab.com. Haga clic en el botón “+” en la esquina superior derecha y luego en “Nuevo proyecto”.

  • Nombre del proyecto: myrepo (o lo que desees)
  • Público
  • SÍ Inicializar el repositorio con un README

Haga clic en el gran botón verde “Crear proyecto”.

Copie la URL de clonación HTTPS o SSH a su portapapeles mediante el botón azul “Clonar”.

15.1.2 Bitbucket

Inicie sesión en https://bitbucket.org. En el panel del lado izquierdo, haga clic en el botón “+” y luego en “Repositorio” en “Crear”.

  • Nombre del repositorio: myrepo (o el que desees)
  • Nivel de acceso: desmarque para hacer público el repositorio.
  • ¿Incluir un archivo README?: seleccione “Sí, con un tutorial (para principiantes)” o “Sí, con una plantilla”.
  • Sistema de control de versiones: Git

Click the big blue button “Create repository.”

Copie la URL de clonación HTTPS o SSH que aparece al hacer clic en el botón azul “Clonar”. Asegúrate de eliminar el git clone... que aparece al principio.

15.2 Nuevo proyecto RStudio a través de git clone

Clone a remote repo.

Les presento dos formas de hacer esto:

  • usethis::create_from_github()
  • A través del IDE de RStudio

(Recuerde que mostramos cómo hacer esto con la línea de comando Git en Capítulo 11.)

Cuando clonas tu propio repositorio de GitHub, los dos métodos son equivalentes. En otros escenarios, especialmente fork-and-clone ((secfork-and-clone?)), creo que usethis::create_from_github() es superior, porque realiza una configuración adicional recomendada.

Elija uno de estos métodos a continuación.

15.2.1 usethis::create_from_github()

Puede ejecutar este comando en cualquier sesión de R. Si usa RStudio, hágalo en la consola R de cualquier instancia de RStudio.

usethis::create_from_github(
  "https://github.com/YOU/YOUR_REPO.git",
  destdir = "~/path/to/where/you/want/the/local/repo/"
)

El primer argumento es repo_spec y acepta la especificación del repositorio de GitHub en varias formas. En particular, puedes usar la URL que acabamos de copiar de GitHub.

El argumento destdir especifica el directorio principal donde desea que resida la nueva carpeta (y el repositorio local de Git). Si no especifica destdir, use este valor predeterminado en algún lugar muy visible, como su escritorio. Si desea mantener los repositorios de Git en una determinada carpeta de su computadora, puede personalizar este valor predeterminado configurando la opción usethis.destdir en su .Rprofile.

Aceptamos el comportamiento predeterminado de otros dos argumentos, rstudio y open, porque eso es lo que la mayoría de la gente querrá. Por ejemplo, para un usuario de RStudio, create_from_github() hace esto:

  • Crea un nuevo directorio local en destdir, que contiene todas estas cosas:
    • un directorio o carpeta en su computadora
    • un repositorio Git, vinculado a un repositorio GitHub remoto
    • un proyecto RStudio
  • Abre una nueva instancia de RStudio en el nuevo Proyecto.
  • En ausencia de otras restricciones, sugiero que todos sus proyectos de R tengan exactamente esta configuración.

15.2.2 RStudio IDE

En RStudio, inicie un nuevo proyecto:

  • File > New Project > Version Control > Git. En la “URL del repositorio”, pegue la URL de su nuevo repositorio de GitHub. será algo como esto https://github.com/jennybc/myrepo.git.
  • Sea intencional acerca de dónde crea este proyecto.
  • Te sugiero “Abrir en nueva sesión”.
  • Haga clic en “Crear proyecto” para crear un nuevo directorio, que contendrá todas estas cosas:
    • un directorio o “carpeta” en su computadora
    • un repositorio Git, vinculado a un repositorio GitHub remoto
    • un proyecto RStudio
  • En ausencia de otras limitaciones, sugiero que todos sus proyectos de R tengan exactamente esta configuración.

Esto debería descargar el archivo README.md que creamos en GitHub en el paso anterior. Busque en el panel del explorador de archivos de RStudio el archivo README.md.

Detrás de escena, RStudio ha hecho esto por usted:

git clone https://github.com/jennybc/myrepo.git

15.2.3 Mira alrededor

Independientemente de si usó usethis o RStudio, ahora debería estar trabajando en el nuevo repositorio de Git. El git clone implícito debería descargar el archivo README.md que creamos en GitHub en el paso anterior. Busque en el panel del explorador de archivos de RStudio el archivo README.md.

Hay una gran ventaja en el flujo de trabajo “GitHub primero, luego RStudio”: el repositorio remoto de GitHub está configurado como el remoto origin para su repositorio local y su rama main local ahora está rastreando el main en GitHub. Este es un punto técnico pero importante sobre Git. La implicación práctica es que ahora está preparado para enviar e imporar. No es necesario perder el tiempo configurando controles remotos de Git y rastreando ramas en la línea de comando.

Estamos a punto de confirmar que estamos preparados para realizar push and pulls.

Pull y push.

15.2.4 Opcional: echar un vistazo debajo del capó

Actividad completamente opcional: use la línea de comando Git para ver de qué estamos hablando arriba, es decir, la configuración de la rama remota y de seguimiento.

git remote -v o git remote --verbose muestra los controles remotos que ha configurado. Así es como se ve alguien que usa HTTPS con GitHub y lo llama origin:

~/tmp/myrepo % git remote -v
origin  https://github.com/jennybc/myrepo.git (fetch)
origin  https://github.com/jennybc/myrepo.git (push)

git branch -vv imprime información sobre la rama actual (-vv para “muy detallado”, supongo). En particular, podemos ver que el main local está rastreando la rama main en origin, también conocido como origin/main.

~/tmp/myrepo % git branch -vv
* main 2899c91 [origin/main] A commit from my local computer

Finalmente, git remote show origin ofrece otra visión de información útil sobre ramas y remotos:

~/tmp/myrepo % git remote show origin    
* remote origin
  Fetch URL: https://github.com/jennybc/myrepo.git
  Push  URL: https://github.com/jennybc/myrepo.git
  HEAD branch: main
  Remote branch:
    main tracked
  Local branch configured for 'git pull':
    main merges with remote main
  Local ref configured for 'git push':
    main pushes to main (up to date)

git clone, que RStudio hizo por nosotros, configura todo esto automáticamente. Es por eso que “Primero GitHub, luego RStudio” es la forma preferida de iniciar proyectos temprano en su vida de Git/GitHub.

15.3 Realizar cambios locales, guardar, confirmar

Haga esto cada vez que termine una parte valiosa del trabajo, probablemente muchas veces al día.

Desde RStudio, modifique el archivo README.md, por ejemplo, agregando la línea “Esta es una línea de RStudio”. Guarde sus cambios.

Confirme estos cambios en su repositorio local. ¿Cómo?

  • Haga clic en la pestaña “Git” en el panel superior derecho
  • Marque la casilla “Staged” para cualquier archivo cuya existencia o modificaciones desee confirmar.
    • Para ver más detalles sobre los cambios en el archivo desde la última confirmación, haga clic en “Diff” para ver una ventana emergente de Git.
  • Si aún no estás en la ventana emergente de Git, haz clic en “Commit”.
  • Escriba un mensaje en “Commit message”, como “Commit from RStudio”.
  • Haga clic en “Commit”

15.4 Envía tus cambios locales a GitHub

Haga esto varias veces al día, pero posiblemente con menos frecuencia de lo que se confirme.

Tiene un nuevo trabajo en su repositorio Git local, pero los cambios aún no están en línea.

Esto parecerá contradictorio, pero primero detengámonos y salgamos de GitHub.

¿Por qué? ¡Establece este hábito para el futuro! Si realiza cambios en el repositorio en el navegador o desde otra máquina o (un día) un colaborador lo ha enviado, estará más feliz si realiza esos cambios antes de intentar enviar.

Haga clic en el botón azul “Pull” en la pestaña “Git” en RStudio. Dudo que suceda algo, es decir, recibirás el mensaje “Already up-to-date”. Esto es sólo para establecer un hábito.

Haga clic en el botón verde “Push” para enviar sus cambios locales a GitHub. RStudio informará algo como esto:

>>> /usr/bin/git push origin HEAD:refs/heads/main
To https://github.com/jennybc/myrepo.git
   2899c91..b34cade  HEAD -> main

15.5 Confirmar el cambio local propagado al control remoto de GitHub

Vuelve al navegador. Supongo que todavía estamos viendo su nuevo repositorio de GitHub.

Actualizar.

Deberías ver el nuevo “Esta es una línea de RStudio” en el archivo README.

Si hace clic en “commit”, debería ver uno con el mensaje “Commit from RStudio”.

15.6 Haz un cambio en GitHub

Haga clic en README.md en la lista de archivos en GitHub.

En la esquina superior derecha, haga clic en el lápiz para “Editar este archivo”.

Agregue una línea a este archivo, como “Línea agregada desde GitHub”.

Edite el mensaje de commit en “Confirmar cambios” o acepte el valor predeterminado.

Haga clic en el gran botón verde “Confirmar cambios”.

15.6.1 GitLab

Haga clic en README.md en la lista de archivos en GitLab.

En la esquina superior derecha, haga clic en “Editar”.

Agregue una línea a este archivo, como “Línea agregada desde GitLab”.

Edite el mensaje de confirmación en “Confirmar cambios” o acepte el valor predeterminado.

Haga clic en el gran botón verde “Confirmar cambios”.

15.6.2 Bitbucket

Haga clic en README.md en la lista de archivos de Bitbucket.

En la esquina superior derecha, haga clic en “Editar”.

Agregue una línea a este archivo, como “Línea agregada desde Bitbucket”.

Haga clic en el botón azul “Confirmar”. Aparecerá una ventana emergente. Edite el mensaje de confirmación o acepte el valor predeterminado.

Haga clic en el botón azul “Confirmar”.

15.7 Importar de GitHub

De vuelta en RStudio localmente…

Inspeccione su README.md. NO debería tener la línea “Línea agregada desde GitHub”. Debe quedar como lo dejaste. Comprueba eso.

Haga clic en el botón azul Pull.

Mire README.md nuevamente. Ahora deberías ver la nueva línea allí.

15.8 El fin

Ahora simplemente “haga espuma, enjuague, repita”. Trabaje en algún lugar: localmente o en GitHub. Confirme los cambios. Envielos o importelos, dependiendo de dónde haya realizado el trabajo, pero “sincronice” local y remoto. Repetir.

Tenga en cuenta que, en general (y especialmente en el futuro, cuando colabore con otros desarrolladores), normalmente necesitará importar cambios desde el control remoto (GitHub) antes de enviar los cambios locales que ha realizado. Por esta razón, es una buena idea intentar adquirir el hábito de importar antes de intentar enviar.