Deshacer git commit en Rstudio que es demasiado grande para empujar

5 minutos de lectura

avatar de usuario
thestral

Soy muy nuevo en github y estoy tratando de incorporarlo a mi trabajo por primera vez. Estoy trabajando en RStudo, usando los botones de confirmación y pulsación en la interfaz gráfica de usuario. Puse algunos de mis datos en la carpeta de mi computadora en la que estoy trabajando. Hice algunos compromisos, luego comprometí esos datos y luego hice otros pocos compromisos. Luego traté de empujar todo a github. Sin embargo, recibí un mensaje de error que decía:

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.        
remote: error: Trace: f4a84c3a176d2c77039d041a21c0c455        
remote: error: See http://git.io/iEPt8g for more information.        
remote: error: File S_Fulltaxonomy.csv is 158.06 MB; this exceeds GitHub's file size limit of 100.00 MB        
To [email protected]:moanam/paper.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:moanam/paper.git'

Mi rama ahora está por delante de origin/master por 10 confirmaciones, con el problema de confirmación en algún punto intermedio.

He buscado soluciones a esto y he encontrado publicaciones como deshacer confirmación en medio del historial de Git, ¿Cómo modificar confirmaciones existentes no enviadas? y Cómo eliminar un archivo demasiado grande en una confirmación cuando mi rama está por delante del maestro por 5 confirmaciones

Sin embargo, las soluciones a esto son una línea de código donde se supone que el autor de la pregunta original debe sustituir algunas palabras y ejecutarlo en alguna parte. Realmente soy muy nuevo en esto y no tengo idea de dónde ejecutar todo este código, qué sustituir y cómo encontrar y cambiar el compromiso del problema en mi trabajo. ¿Cómo hago esto? ¿O hay una versión basada en interfaz gráfica de usuario para deshacer la confirmación en RStudio? ¿O podría alguien explicar exactamente cómo usar el código?

Sé que esta es probablemente una pregunta muy simple y lamento haberte hecho perder el tiempo con ella. Sin embargo, realmente he pasado bastante tiempo buscando y no puedo encontrar nada lo suficientemente simple para trabajar. Siempre se asume demasiado conocimiento. ¡Gracias por tu ayuda!

Hay una manera más fácil.

No estoy seguro de cómo hacerlo a través de Rstudio, pero puedes hacerlo en su lugar.

Vaya a la línea de comando -> navegue al directorio de su proyecto

Una vez dentro escriba:

git reset HEAD~

Si desea deshacer dos confirmaciones, escríbalo dos veces.

Esto deshará la última confirmación pero no eliminará ningún archivo. Por lo tanto, todos los archivos volverán a aparecer en el menú por etapas. Después de eso, vuelva a confirmar sin los archivos grandes, luego vuelva a presionar y todo debería estar bien.

  • En RStudio es básicamente lo mismo: vaya a la pestaña git> icono de engranaje> shell. Eso abre un caparazón y puedes usar el git reset HEAD~ dominio.

    – Filups21

    1 de noviembre de 2020 a las 19:20

avatar de usuario
thestral

Lo resolví. Entonces, para cualquier otra persona:

Primero, haga una copia de seguridad de todos sus archivos en otra ubicación (los originales se eliminarán)

Puede abrir la línea de comando desde RStudio desde la pestaña Git y luego ir a Más y luego a Shell.

Escribir git reset --hard origin/master
Esto deshará todas las confirmaciones y volverá a lo que tenía en su último impulso.

Vuelva a copiar los archivos en su directorio de trabajo (reemplazando las versiones anteriores) y vuelva a confirmar todos los cambios que ha realizado desde entonces. Asegúrese de no copiar el archivo rhistory o rehará todas sus confirmaciones anteriores.

  • Si desea saber cuántos compromisos tiene desde su último compromiso, puede verlos: Vaya a Rstudio | pestaña git | maestro (icono). Recibe un mensaje que muestra algo como: ‘ M R/your_changed_file.R Your branch is before ‘origin/master’ by 1 commit. (use “git push” para publicar sus confirmaciones locales) ‘

    – Frijol ágil

    5 de agosto de 2018 a las 6:13


  • Incluso cuando elimino rhistory, las confirmaciones anteriores todavía están allí. ¿Alguna idea de por qué?

    – ethan tenison

    7 jun 2021 a las 21:49

  • Mucho más fácil de usar git reset HEAD~ en una terminal como lo sugiere Adam Waring, especialmente si el gran compromiso es el último

    – Kaptajn Kasper

    30 de marzo a las 8:15


Así que creo que estás haciendo un par de preguntas aquí:

  1. Una confirmación con un tamaño de archivo grande: deberá excluir estos archivos en su archivo .gitignore para que permanezcan en su carpeta local pero no se inserten en su repositorio de github. Más sobre eso aquí: https://git-scm.com/docs/gitignore
  2. Revertir una confirmación de git: puede usar los comandos que publicó, pero tiene razón, probablemente debería saber lo que está haciendo. Así que invierta un poco de tiempo y lea los conceptos básicos de git.
  3. Buscando una GUI: puede trabajar con GitGUI, hay una versión para Mac y Windows https://desktop.github.com/. Pero como tendrá que entender los conceptos básicos de git de todos modos, en mi humilde opinión, la GUI no lo hace mucho más fácil. Quédate con él y entenderás este tipo de cosas en poco tiempo.

¿Ha sido útil esta solución?