example git git-clone shallow-clone

git - example - ¿Cómo clonar el proyecto de inicialización/arranque sin toda la historia?



git clone ubuntu (3)

Pruebe algo como esto:

mkdir -p /tmp/git-copy cd /tmp/git-copy # create another copy of your repository git clone file:///path/to/cloned/repo cd repo git rebase -i (first-commit) # in vim: # :2,$s/^pick/squash # :w # Now wait, it will take a while... git push --mirror [email protected]:username/new-repo.git

Lo intenté justo ahora en este repositorio . Parece que funciona, no hay historial y todos los submódulos están intactos.

Tenga en cuenta que el uso de --depth=1 parámetro le impide --depth=1 el proyecto a un nuevo repositorio .

para más detalles, consulte: "Remoto rechazado" (actualización superficial no permitida) después de cambiar la URL remota de Git.


Puedes hacer un

git clone <git_url>

elimine el repositorio .git de su carpeta. Que eliminará todo tu historial.

El puedes hacer un

git init

que creará un proyecto de git completamente nuevo para ti.

Esta puede no ser la mejor manera. Pero esto funcionará. Espero eso ayude.


Siempre que considere que la pérdida total de la historia no es un problema, el enfoque sugerido por Ajay es perfectamente válido. Pero en caso de que quiera mantener el historial de su clon superficial, tengo una sugerencia diferente.

Un clon superficial pretende tener el historial completo utilizando un llamado punto de injerto para simular el padre del "primer" compromiso.

Si suponemos que tenemos el historial completo disponible, podríamos reformular la pregunta: ¿cómo puedo descartar el historial antes de una revisión específica?

Esto significa que podemos usar una combinación de un punto de injerto y git filter-branch (como se sugiere en la pregunta vinculada). Sin embargo, debe tener en cuenta que esto reescribirá su historial completo, haciendo que el nuevo sea incompatible con el control remoto desde el que inicialmente clonamos. Debido a esto, debemos eliminar el antiguo control remoto de nuestro repositorio.

git remote remove <old-remote-name>

Ahora podemos comenzar nuestra reescritura. Supongamos que queremos hacer que el maestro actual confirme la nueva raíz para el repositorio.

git rev-parse --verify master >> .git/info/grafts git filter-branch -- --all

Esto reescribirá el historial completo de nuestro repositorio, con la confirmación maestra actual como la nueva raíz. Puede finalizar la reescritura eliminando las referencias de "copia de seguridad" en refs/original . Además, ahora puede eliminar el archivo .git/shallow .

Después de que haya hecho esto, podrá empujar el historial ahora no injertado en su nuevo control remoto.