15 El infierno de RStudio, Git, GitHub

Problemas que se han visto y posibles soluciones.

Si experimenta algún problema nuevo y, sobre todo, encuentra la solución correspondiente, se apreciará mucho saber de usted!

15.1 Creo que he instalado Git pero ¡diablos! si pudiera encontrarlo

Cuando instale Git, intente controlar o grabar dónde está instalado. Haga una nota mental o física de estas cosas.

Usted puede encontrar a Git después, con estos comandos en el shell:

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

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

No es del todo loco volver a instalar Git, usando un método que lo deje en una ubicación más convencional, y prestar mucha atención dónde se instaló. Viva y aprenda.

15.2 El panel de Git de RStudio desaparece en Mac OS

Después de una actualización de Mac OS, es posible que deba activar las herramientas de línea de comandos de Xcode para solicitarle lo que necesita, es decir, volver a instalar o volver a aceptar el acuerdo de licencia. Hemos visto que esto provoca que el panel de RStudio Git desaparezca en un sistema donde estaba funcionando anteriormente. Use comandos como estos a continuación para hacerle cosquillas a Xcode:

o

Luego reinicie RStudio.

15.3 PATH disfuncional

Es bastante seguro de que la mayoría de los casos en los que RStudio no detecta automáticamente el ejecutable de Git provienen de problemas con el PATH. Este es el conjunto de directorios donde la computadora buscará ejecutables, como Git (hoy) o make (más adelante en este curso). Ciertos métodos de instalación de Git, especialmente en Windows y/o sistemas operativos más antiguos, tienen una mayor tendencia a poner Git en una ubicación no convencional o dejar de agregar el directorio correspondiente al PATH.

¿Cómo ver su PATH?

En el shell:

Eche un buen vistazo a eso. Vea el punto anterior sobre cómo encontrar su ejecutable Git o reinstalarlo mientras está completamente despierto. ¿El directorio de host está en su PATH? ¿No? Arréglelo

Vaya aquí para obtener instrucciones sobre qué poner en su .bash_profile para añadir un directorio al PATH.

15.4 Botones Push/Pull atenuados en RStudio

¿Está seguro de que su repositorio local está rastreando un repositorio remoto, por ejemplo, un repositorio de GitHub? En un shell con directorio de trabajo configurado en el repositorio local de Git, ingrese estos comandos:

Queremos ver que fetch y push estén configurados en URL remotas que apuntan al repositorio remoto. Tenga en cuenta también que el repositorio de GitHub es un remoto llamado origen, en lo que respecta a su repositorio local. Esto es típico y, aunque creo que github es un nombre muy superior, el origen es una convención tan fuerte que lo sigo.

Si descubre que todavía necesita configurar un control remoto, obtenga la URL HTTPS o SSH, según corresponda, para su repositorio GitHub. Esto es fácil de obtener en su portapapeles desde la página GitHub del repositorio. Haz esto en el caparazón:

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

Descargue todos los archivos del repositorio GitHub en línea y haga frente a cualquier conflicto.

``` shell
git pull origin master
```

Llame a git remote -v nuevamente. Una vez que pueda probar que su control remoto GitHub está configurado correctamente, puede pasar al siguiente paso.

¿Estás seguro de que la sucursal actual está rastreando una sucursal en el control remoto? En ese mismo shell, en su repositorio, haga esto:

Lo anterior muestra la confirmación exitosa de que la rama master local está rastreando origin/master, es decir, la rama principal en GitHub. Si no ve el bit [origin/master], eso es un problema. Por cierto, git branch -r es otra forma útil de examinar las ramas de seguimiento remoto. (Si está trabajando con una rama que no sea master, ajuste todo en consecuencia).

Al conectar un repositorio local a un nuevo repositorio de GitHub, mucha gente recuerda agregar el control remoto GitHub, pero también se olvida de consolidar esta relación de seguimiento para las sucursales relevantes.

Si descubres que la rama master local todavía no está siguiendo ’master` en GitHub, corrige eso de la siguiente manera:

Esto es equivalente a git push -u origin master, pero transmite más acerca de lo que está haciendo.

Llame git branch -vv o git branch -r nuevamente para confirmar que la rama master en GitHub es la rama ascendente o de seguimiento para la ramamaster local.

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

Vea la sección de arriba sobre “Botones Push/Pull atenuados en RStudio.”

15.6 Falla en el push a nivel de RStudio

¿Obtiene este error en RStudio?

error: unable to read askpass response from 'rpostback-askpass'

Abra el shell: Tools > Shell.

git push -u origin master

15.7 Push rechazado, i.e. falla a nivel Git/GitHub

Quizás tenga cambios en el repositorio remoto Y en su repositorio local. El hecho de que no recuerde haber hecho ninguna modificación en el navegador no significa que no la hizo.

Haga pull primero. Resuelva cualquier conflicto. Luego intente hacer push de nuevo.

15.8 RStudio no está haciendo disponibles ciertos archivos para staging/committing

¿Tiene espacios en sus directorios o nombres de archivo? Un espacio en un nombre de archivo es un espacio en su alma. Deságase de eso.

¿Su repositorio de Git / Proyecto de Git está dentro de una carpeta que … eventualmente se sube a Google Drive, DropBox, Microsoft OneDrive o en una unidad de red? En caso afirmativo, se le recomienda que mueva el repositorio / Proyecto a un directorio antiguo que esté alojado directamente en la computadora y que no esté administrado, por ejemplo, en Google Drive.

Si no puede manejar las dos causas raíces identificadas anteriormente, es posible que un cliente Git más poderoso (capítulo 9) pueda hacer frente a estas situaciones. También debe intentar operaciones de Git desde la línea de comandos.

15.9 Se rumora que tiene algún repositorio de Git dentro de otro repositorio de Git

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

Si tiene una necesidad real de esto, lo que es realmente raro, la forma correcta de hacerlo es a través de submódulos.

En STAT 545, ciertamente no es necesario hacer esto y cuando se ha visto, ha sido un error. Esto ha resultado en la pérdida inesperada y completa del repositorio interno de Git. Seguramente había más cosas allí (por ejemplo, el cliente GitHub Desktop), pero el uso no estándar de repositorios Git hace mucho más fácil hacer errores costosos.