Actualmente tengo un repositorio privado en github que quiero hacer público. Sin embargo, algunas de las confirmaciones iniciales contienen información que no quiero hacer pública (credenciales codificadas, etc.).
¿Cuál es la ruta más fácil para hacer público el último commit (realmente no necesito o quiero los commits anteriores en el repositorio público) sin incluir parte o todo el historial de commit?
Respuestas:
Puede limitar la profundidad de la historia mientras clona :
Úselo si desea un historial limitado, pero aún algunos.
fuente
shallow update not allowed
.Use el siguiente comando:
Dónde:
depth
es la cantidad de confirmaciones que desea incluir. es decir, si solo quieres el último uso de commitgit clone --depth 1
branch
es el nombre de la rama remota desde la que desea clonar. es decir, si desea las últimas 3 confirmaciones delmaster
uso de la ramagit clone --depth 3 -b master
repo_url
es la url de tu repositoriofuente
shallow update not allowed
. Encontré que esta respuesta de desbordamiento de pila es útil en esta instancia.La eliminación de la
.git
carpeta es probablemente la ruta más fácil ya que no desea / necesita el historial (como dijo Stephan).Para que pueda crear un nuevo repositorio desde su último commit: ( ¿Cómo clonar el proyecto seed / kick-start sin toda la historia? )
luego eliminar
.git
, y luego ejecutarO si desea reutilizar su repositorio actual: ¿ Hacer que la confirmación actual sea la única confirmación (inicial) en un repositorio Git?
Siga los pasos anteriores y luego:
Empuje a su repositorio.
fuente
fuente
--depth 1
es innecesaria en este caso porque la historia también se elimina conrm -rf .git
git clone --depth 1 -b $src_branch $repo_src_url $dir && cd ./$dir && git commit --amend --author "Some One <[email protected]>" -m "Initial Commit" && git remote set-url origin $repo_trg_url && git push -u origin master
--depth 1
es innecesario, pero también es inofensivo y ahorra un poco de ancho de banda de red (no tiene sentido buscar un historial que está a punto de eliminar de todos modos)¿No es esto exactamente lo que hace aplastar un rebase? Simplemente aplasta todo excepto el último commit y luego (fuerza) empujarlo.
fuente