14  RStudio, Git, GitHub Hell

Problemas que hemos visto y posibles soluciones.

Si experimenta algún problema nuevo y, sobre todo, encuentra la solución correspondiente, ¡nos encantaría saber de usted!

14.1 Creo que he instalado Git pero maldita sea si puedo encontrarlo.

Cuando instales Git, intenta controlar o registrar dónde se está instalando. Tome nota mental o física de estas cosas.

Es posible que puedas encontrar Git después del hecho con estos comandos en el shell (Apéndice A):

  • which git (Mac, Linux o cualquier dispositivo que ejecute un shell bash)

  • where git (Windows, cuando no está en un shell bash)

No es del todo una locura simplemente reinstalar Git, usando un método que lo deje en una ubicación más convencional y prestando mucha atención a dónde se está instalando. Vive y aprende.

14.2 El panel RStudio Git desaparece en Mac OS

A veces, el panel RStudio Git desaparece en un sistema donde estaba funcionando anteriormente. Esto suele sucederle a las personas que instalaron Git instalando las herramientas de línea de comandos de Xcode. Suele ser una señal de que necesita volver a aceptar el acuerdo de licencia de Xcode. Esto es necesario después de una actualización de Mac OS, la reinstalación de Xcode o incluso actualizaciones silenciosas de Xcode que a veces parecen ocurrir sin el conocimiento del usuario.

En el shell, puedes ejecutar git status y es posible que veas un mensaje como este:

Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.

Si recibe instrucciones tan claras, haga lo que dice, es decir, ejecute sudo xcodebuild -license, para volver a aceptar la licencia.

En cualquier caso, debe hacer cosquillas a las herramientas de línea de comandos de Xcode para que le soliciten lo que necesite. Aquí hay otros comandos que, según la situación, pueden activar las indicaciones necesarias:

xcode-select --install

o

git config --global --list

Entonces reinicie RStudio.

14.3 PATH disfuncional

Algunos casos en los que RStudio no detecta automáticamente el ejecutable de Git se deben a problemas con PATH. Este es el conjunto de directorios donde su computadora buscará ejecutables, como Git (hoy) o make. Ciertos métodos de instalación de Git, especialmente en Windows y/o sistemas operativos más antiguos, tienen una mayor tendencia a colocar Git en una ubicación no convencional o a no agregar el directorio relevante a PATH.

¿Cómo ver PATH?

En el shell:

echo $PATH

Fíjate bien en esto. Vea el punto anterior sobre cómo encontrar su ejecutable Git o reinstalarlo mientras está completamente despierto. ¿Está el directorio principal del ejecutable de Git en su PATH? ¿No? Arregla eso.

En este punto te recomiendo que hagas una búsqueda en Google para encontrar instrucciones sobre cómo modificar PATH en tu sistema operativo específico.

14.4 Botones Push/Pull atenuados en RStudio

¿Está seguro de que su repositorio local está asociado con un repositorio remoto, p. ¿Un repositorio de GitHub? En un shell con el directorio de trabajo configurado en el repositorio de Git local, ingrese este comando:

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

Queremos ver que la recuperación y la inserción estén configuradas en URL remotas que apunten al repositorio remoto.

Si descubre que aún necesita configurar un control remoto, obtenga la URL HTTPS o SSH, según corresponda, para su repositorio de GitHub. Es fácil acceder a su portapapeles desde la página de GitHub del repositorio. Haz esto en el shell:

git remote add origin https://github.com/jennybc/myrepo.git

Descargue todos los archivos del repositorio en línea de GitHub y solucione cualquier conflicto (sustituyendo master por main, si corresponde).

git pull origin main

Llame a git remote -v nuevamente. Una vez que esté satisfecho de que su control remoto GitHub esté configurado correctamente, puede continuar con el siguiente paso.

¿Está seguro de que la rama actual está siguiendo una rama en el control remoto? En ese mismo shell, en tu repositorio, haz esto:

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

Lo anterior muestra una confirmación exitosa de que la rama main local está rastreando origin/main, es decir, la rama main en GitHub. Si no ve el bit [origen/principal], eso es un problema. Por cierto, git branch -r y git remote show origin son dos comandos más que son útiles para examinar su configuración remota.

Al conectar un repositorio local a un nuevo repositorio de GitHub, muchas personas recuerdan agregar el control remoto de GitHub, pero también se olvidan de consolidar esta relación de seguimiento para las ramas relevantes.

Si descubre que su rama main local aún no realiza un seguimiento de main en GitHub, corríjalo de la siguiente manera:

git push --set-upstream origin main

Esto es equivalente a git push -u origin main pero transmite más sobre lo que estás haciendo.

Llame a git branch -vv o git branch -r o git remote show origin nuevamente para confirmar que la rama main en GitHub es la rama de seguimiento para la rama main local.

14.5 No tengo idea si mi repositorio local y mi repositorio remoto están conectados.

Consulte la sección anterior sobre “Botones Push/Pull atenuados en RStudio”.

14.6 Push rechazado, es decir, falla en el nivel de Git/GitHub

Es posible que tenga cambios en el repositorio remoto Y en su repositorio local. El hecho de que no recuerde haber realizado ninguna edición en el navegador no significa que no lo haya hecho. Hazme reír.

Realiza un pull primero. Resuelve cualquier conflicto. Luego intenta realizar un push nuevamente.

14.7 RStudio no pone ciertos archivos a disposición de staging/committing

¿Tiene un espacio en su directorio o nombres de archivos? Un espacio en el nombre de un archivo es un espacio en tu alma Deshazte de él.

¿Está su repositorio Git/Proyecto RStudio dentro de una carpeta que… eventualmente se acumula en Google Drive, DropBox, Microsoft OneDrive o una unidad de red? En caso afirmativo, le recomiendo que mueva el repositorio/Proyecto a un directorio antiguo y simple que se encuentre directamente en su computadora y que no esté administrado, por ejemplo, por Google Drive.

Si no puede abordar las dos causas fundamentales identificadas anteriormente, entonces es posible que un cliente Git más potente (Capítulo 8) pueda hacer frente a estas situaciones. Pero no hago ninguna promesa. También deberías probar las operaciones de Git desde la línea de comandos.

14.8 He oído que tienes algún repositorio de Git dentro de tu repositorio de Git.

No cree un repositorio Git dentro de otro repositorio Git. Simplemente no lo hagas.

Si tiene una necesidad genuina de esto, lo cual es realmente raro, la forma correcta de hacerlo es a través de submodules.

En STAT 545, ciertamente no necesitamos hacer esto y cuando lo hemos visto, ha sido un error. Esto ha resultado en la pérdida completa e inesperada del repositorio interno de Git. Sin duda, hubo más cosas aquí (tos, cliente de escritorio GitHub), pero el uso no estándar de los repositorios de Git hace que sea mucho más fácil cometer errores costosos.