tag soft sirve qué para origin git repository git-revert

soft - git tag push



Cómo revertir el repositorio de Git para confirmar primero y borrar todo el historial (5)

Ciertamente puedes eliminar todo el historial en la rama actual usando:

git reset --hard <commit_id>

donde commit_id es sha1 de algún commit histórico.

Sin embargo, rara vez es necesario si está aprendiendo y quiere experimentar.

En su lugar, simplemente puede crear una nueva rama para sus experimentos, como:

git branch experiment <commit_id> git checkout experiment ...

Esto sería idéntico para la mayoría de los propósitos y propósitos a la primera variante, pero puede volver a cambiar si lo desea.

También puede cambiar el nombre de las ramas, de modo que sus experimentos tengan nombres de ramas originales, como:

git branch -m master backup git branch master git checkout master

Si desea crear una backup rama, simplemente haga lo siguiente:

git branch -D backup

Estoy aprendiendo a usar git estos días y tuve que hacer muchos fallos. Por lo tanto, necesitaba eliminar y crear nuevamente mis repositorios remotos y locales. ¿Hay una manera de revertir a la primera confirmación del repositorio y eliminar todo el historial después de eso? Básicamente una pizarra limpia para experimentar.


No conozco ninguna forma de hacer exactamente lo que está pidiendo (se puede revertir al primer compromiso, pero no eliminar todo el historial, ya que el historial contendrá al menos ese compromiso inicial).

Si fuera tú, simplemente eliminaría el repositorio remoto y el directorio .git del repositorio local, y comenzaría de nuevo con git init .

Lo más cerca que puedo de llegar a lo que estás pidiendo sería revertir todo menos el primer compromiso. Para hacer eso, primero encontrarías el SHA1 de la primera confirmación, por ejemplo:

% git rev-list --max-parents=0 --abbrev-commit HEAD aa8119f

... y luego correr

% git reset aa8119f

...o

% git reset --hard aa8119f

... dependiendo de si desea conservar o descartar todos los cambios realizados desde esa confirmación inicial. (Lo anterior supone que solo tiene una rama. Si no, también tendrá que eliminar cualquier otra rama que tenga con git branch -d <BRANCHNAME> ).

Finalmente, correrías

% git push -f

(Espero que te git push -f cuenta de que git push -f es un no-no siempre que estés presionando para obtener un repo compartido con otros).

Desafortunadamente, como ya se explicó, este enfoque no elimina todo el historial.

Si esto es algo que querrá hacer a menudo, recomendaría que, inmediatamente después de git init , ejecute algo como

% git commit --allow-empty --allow-empty-message -m '''' % git tag -a -m '''' ROOT

Esto colocará una confirmación vacía en la raíz de su historial y la etiquetará con una etiqueta llamada ROOT. Entonces puedes hacer algo como

% git reset ROOT

o

% git reset --hard ROOT

para volver a ese primer compromiso vacío.

Para obtener una buena idea de lo que hace git reset , recomiendo leer this .


Para hacer un restablecimiento limpio, desea eliminar los registros, los cambios de configuración y todo, yo haría esto obteniendo solo la raíz maestra en un nuevo repositorio:

git tag master-root $(git rev-list --topo-order master|sed ''$!d'') git init ../reset-my-repo cd ../reset-my-repo git fetch $OLDPWD master-root git checkout -B master FETCH_HEAD

(Es decir, más o menos lo que dijo VonC )

(agregado --topo-order para proteger contra marcas de tiempo malas)


Podrías reiniciar al primer commit:

" ¿Cómo mostrar la primera confirmación por ''git log''? " Describe cómo encontrar la primera confirmación:

git log --pretty=format:%H | tail -1

(funciona solo si no hay múltiples ramas raíz)

git reset --hard yourFirstCommitSHA1

Tenga en cuenta que después del reinicio, para obtener una pizarra realmente limpia, simplemente puede git init un nuevo repositorio y copiar el contenido de su primer compromiso que acaba de reiniciar (y agregar y confirmar en ese nuevo repositorio)


Simplemente .git directorio .git una vez que haya verificado su primer confirmación. Como tal:

git checkout <first-commit-sha> rm -rf .git git init git add -A git commit -m ''Initial Commit''