Cancelar un commit en gitlab
Clement
-
NHenry Mensajes publicados 15235 Fecha de registro Estado Moderador Última intervención -
NHenry Mensajes publicados 15235 Fecha de registro Estado Moderador Última intervención -
Hola,
Espero que mi pregunta sea clara y comprensible, he estado usando gitlab desde hace poco.
Ayer, quise subir un archivo a un servidor gitlab al que otras personas también tienen acceso. Ciertamente funcionó, pero todos los archivos que aparecían en la rama "master" desaparecieron una vez que se añadió mi archivo. El historial de la rama master indica que mi commit eliminó todos esos archivos.
Quise deshacer esta acción tratando de encontrar todos esos archivos en otro lugar, descargándolos y colocándolos en mi carpeta git y luego haciendo git push para restaurarlos en el servidor en cuestión. Funcionó, pero hay un montón de archivos que no pude encontrar.
Hoy, alguien hizo un commit para agregar algunos archivos.
Así que tengo 2 preguntas: ¿es posible deshacer mis 2 commits sin tocar el commit hecho por esa última persona? En resumen, ¿hacer que mis acciones no tengan ningún impacto?
He escuchado hablar de un comando git revert --no-commit XX..HEAD git commit
¿Podría funcionar?
Segunda pregunta: ¿cómo es que los otros archivos desaparecieron cuando simplemente añadí un archivo?
Muchas gracias..
Espero que mi pregunta sea clara y comprensible, he estado usando gitlab desde hace poco.
Ayer, quise subir un archivo a un servidor gitlab al que otras personas también tienen acceso. Ciertamente funcionó, pero todos los archivos que aparecían en la rama "master" desaparecieron una vez que se añadió mi archivo. El historial de la rama master indica que mi commit eliminó todos esos archivos.
Quise deshacer esta acción tratando de encontrar todos esos archivos en otro lugar, descargándolos y colocándolos en mi carpeta git y luego haciendo git push para restaurarlos en el servidor en cuestión. Funcionó, pero hay un montón de archivos que no pude encontrar.
Hoy, alguien hizo un commit para agregar algunos archivos.
Así que tengo 2 preguntas: ¿es posible deshacer mis 2 commits sin tocar el commit hecho por esa última persona? En resumen, ¿hacer que mis acciones no tengan ningún impacto?
He escuchado hablar de un comando git revert --no-commit XX..HEAD git commit
¿Podría funcionar?
Segunda pregunta: ¿cómo es que los otros archivos desaparecieron cuando simplemente añadí un archivo?
Muchas gracias..
2 respuestas
Como mínimo, puedes crear una rama en el último commit (git branch ...)
Luego forzar la rama master en el último buen commit. (Git reset <Hash>)
Intentar recrear los commits correctamente
y empujar todo con git push --force
--
Intervengo principalmente en VB6 y VB.NET, con un poco de C#, pero la moderación me lleva a menudo a otros lenguajes.
En VB.NET piensa en activar "Option Explicit" y "Option Strict"
Luego forzar la rama master en el último buen commit. (Git reset <Hash>)
Intentar recrear los commits correctamente
y empujar todo con git push --force
--
Intervengo principalmente en VB6 y VB.NET, con un poco de C#, pero la moderación me lleva a menudo a otros lenguajes.
En VB.NET piensa en activar "Option Explicit" y "Option Strict"
¿Podrías explicarme rápidamente cómo es que los comandos que ingresé:
git pull / git add . / git commit -a -m “mi comentario” / git push
resultaron en la eliminación de los archivos de la rama master, cuando en realidad quería agregar un archivo, no eliminarlo.
Como dije, soy un principiante en gitlab, pero ¿es porque la carpeta gitlab en mi PC no contenía ninguno de los archivos del servidor, así que cuando ingresé mi comando, el servidor se sincronizó con mi carpeta gitlab y, por lo tanto, todo desapareció?
Y si es así, ¿significa que para mis futuras cargas, tendré que asegurarme de tener todos los archivos del servidor presentes en mi carpeta gitlab para evitar que el mismo problema se repita?
Y una última pregunta, cuando volví a revisar la lista de archivos que eliminé, y hago clic en su nombre en el servidor, todavía puedo acceder a ellos, descargar algunos, etc. ¿Es raro, no, dado que se supone que los he eliminado?
-a, --all
Dile al comando que registre automáticamente los archivos que han sido modificados y eliminados, pero los nuevos archivos que no has indicado a Git no se ven afectados.
En resumen, poner un -a valida automáticamente todos los archivos modificados y eliminados.
Te recomiendo evitar esto y hacer los "git add" de cada archivo modificado, esto te permitirá evitar subir cambios no deseados.
"Git add ." ya realiza las adiciones y modificaciones (pero no las eliminaciones)
Por defecto, se recomienda tener todos los archivos del commit en el que estás. Podrás hacer cosas más específicas más adelante con la experiencia. Git es muy potente, pero un gran poder conlleva una gran responsabilidad.
Gitlab es un servidor de repositorio para git, al igual que lo son github, gitea, ...
Git registra todo, los archivos eliminados solo están en los commits que has subido, los commits anteriores no se ven alterados.