Tengo curiosidad acerca de cómo eliminar la primera confirmación en git.¿Cómo eliminar el primer commit en git?
¿Qué es la revisión antes de cometer algo? ¿Esta revisión tiene un nombre o etiqueta?
Tengo curiosidad acerca de cómo eliminar la primera confirmación en git.¿Cómo eliminar el primer commit en git?
¿Qué es la revisión antes de cometer algo? ¿Esta revisión tiene un nombre o etiqueta?
Para mí, la forma más segura es utilizar el comando update-ref
:
git update-ref -d HEAD
se eliminará la referencia con nombre HEAD
, por lo que se reinicio (en voz baja, no perderá su trabajo) toda su confirma su rama actual.
Si lo que desea es combinar la primera comprometerse con el segundo, puede utilizar el comando rebase
:
git rebase -i --root
Una última forma podría ser la creación de una rama de huérfana, una rama con el mismo contenido pero sin cometer historia, y confirme sus nuevos contenidos en él:
git checkout --orphan <new-branch-name>
Es una lástima que esta no sea la respuesta aceptada. También es malo que la mayoría de los hits en google digan más o menos "no se puede deshacer el primer commit". Esto hizo el truco para mí. ¡Gracias! – danielpops
¡Gracias @danielpops por su apoyo! Es bueno notar que respondí a esta pregunta 3 años después. Git ha evocado mientras tanto. – tzi
La rama huérfana hizo el truco. ¡Gracias! – fanaugen
No hay nada antes de la primera confirmación, ya que cada confirmación se refiere a una confirmación principal. Esto hace que el primer compromiso sea especial (una confirmación huérfana), por lo que no hay forma de referirse a un "estado" anterior.
Así que si quiere corregir la confirmación, puede simplemente git commit --amend
: esto modificará la confirmación sin crear otra.
Si lo que desea es empezar de nuevo, elimine el repositorio .git
, y crea otro con git init
Esta respuesta es incorrecta: HAY una forma de volver al estado anterior al primer compromiso Ver [respuesta de tzi] (http://stackoverflow.com/a/32765827/46783) a continuación. –
Si desea mantener otras ramas, pero por ejemplo hacen que la rama principal empezar de nuevo sin historia común a otra ramas, una forma segura de lograr esto es crear un nuevo repositorio, y hacer que los contenidos de que, en su viejo:
cd ..
git init newrepo
cd newrepo
# make some initial commits
git push ../oldrepo master:newmaster
esto crea rama "Newmaster" en el antiguo repositorio, con la historia que no es común con cualquiera de las otras ramas. Por supuesto, también puedes sobrescribir el maestro, con `git push -f'.
Si desea destruir todas las ramas y todo el contenido existente, simplemente ejecute rm -rf .git/
.
Es posible que desee editar su primera confirmación (ya que siempre hay una primera confirmación en un repositorio de git). Considere usar git commit --amend --reset-author
en lugar del git commit --amend
habitual.
Otra manera de hacerlo es:
git checkout dev
git branch -D master
git checkout --orphan master
Por supuesto, todo esto dependerá de su uso, pero si tiene más de una rama, eliminando t El directorio .git
no tiene sentido.
Después de hacer esto, debe eliminar la rama en el control remoto antes de presionar. De lo contrario, cuando intentes empujar tendrás este error:! [rechazado] maestro -> maestro (no avance rápido) - error: error al presionar algunos refs a '[email protected]: r1/r2.git' - sugerencia: las actualizaciones fueron rechazadas porque la punta de su rama actual es detrás - sugerencia: su contraparte remota. Integre los cambios remotos (por ejemplo, sugerencia: 'git pull ...') antes de volver a presionar ... - Si hace un git pull, todos los commits vuelven. – dxvargas
git checkout --orphan TEMP_BRANCH
git add -A
git commit -am "Commit inicial"
git branch -D master
git -m rama principal
git push origin master -f
Para empezar con git, usted debe saber que la revisión no tiene sentido. Puedes hablar de commits o sus SHA relativos. Además, ¿por qué querrías hacer esto? El primer commit es en lo que se basa todo. Podrías aplastar algunos commits juntos, incluyendo el primer commit, que se convierte en el nuevo primer commit, pero ¿qué significa hasta eliminar el primer commit (o eliminar alguno excepto el último commit)? – Shahbaz
@Shahbaz, sí, esa es la mejor manera, mira aquí, por ejemplo: http://ariejan.net/2011/07/05/git-squash-y-la-compila-comillas-en-una- – timaschew
Puedes usar 'git rebase- yo - raíz'. Consulte la siguiente respuesta de SO para obtener más detalles: http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert