Me gustaría crear una nueva sucursal en mi repositorio que solo incluya archivos de un directorio específico en el maestro y su historial luego presione esa rama a un nuevo repositorio.Git crea una nueva sucursal con solo un directorio específico y su historial y luego ingresa al nuevo repositorio
... o algo equivalente, por ejemplo, puede ser posible enviar un directorio a un nuevo repositorio a un repositorio nuevo sin crear una bifurcación.
Hasta ahora creo que lo siguiente funcionará, pero me pregunto si hay una forma más simplificada.
1 - Crear una rama de vacío:
git symbolic-ref HEAD refs/heads/<new-branch>
rm .git/index
git clean -fdx
2 - Pedido un directorio de maestro:
git checkout master <paths> ...
git add <paths> ...
git commit
3 - rama de Push to nuevo mando a distancia:
git push -u <remote-URL> <new-branch>
4 - Luego, en el nuevo repositorio, fusione la sucursal con el maestro:
git checkout -t origin/<new-branch>
git checkout master
git merge <new-branch>
git branch -d afterimage
git branch -d -r afterimage
Estoy intentando hacer algo equivalente a Detach subdirectory into separate Git repository, pero sin el desorden git filter-branch
.
... pero en realidad * necesita * usar 'git filter-branch' para extraer el historial del subdirectorio. Sin eso, solo tienes archivos. –
Realmente no veo el interés de no seguir publicando el enlace. Hacerlo de la manera que propones funciona, pero es fuerza bruta, y no limpiará tu historial ni tus datos de repositorio. – CharlesB