martes, 2 de agosto de 2016

Git: mover una carpeta a otro repositorio manteniendo el histórico


http://lulachronicles.blogspot.nl/2016/06/git-how-to-move-folder-to-new-empty.html


Esto es cómo lo hice yo, no se si es la mejor forma pero funciona 100%

Usé los comandos descriptos en este artículo https://help.github.com/articles/remove-sensitive-data/



  1. Dos repositorios: REPO_OLD con la carpeta que quiero mover, REPO_NEW un repositorio vacío a donde quiero mover la carpeta
     
  2. Copiar todo (incluida la carpeta .git) desde el repositorio REPO_OLD al repositorio REPO_NEW (otra forma es clonar REPO_OLD en una nueva carpeta REPO_NEW)
     
  3. IMPORTANTE: borrar origin en el repositorio REPO_NEW: git remote rm origin
     
  4. Borrar en el repositorio  REPO_NEW todas las carpetas que NO se quieren mover. Por ej. si la carpeta se llama FOLDER entonces

    git filter-branch --force --index-filter ' git rm --cached --ignore-unmatch -r  FOLDER/ ' --prune-empty --tag-name-filter cat -- --all

    hacerlo con todas las carpetas, una por una. Al final en REPO_NEW debería quedar solamente la carpeta que queremos mover. Si algunas carpetas todavía existen es porque tenían archivos que no se habían agregado a git, se pueden borrar a mano sin problemas.
     
  5. Ahora hay que setear el origin en REPO_NEW para que apunte al nuevo repositorio.
     
    Por ej. git remote add origin git@bitbucket.org:someuser/REPO_NEW.git 
     
  6. Pushear los cambios, forzando que sobreescriba en el origin: git push origin --force --all
     
  7. Ok, la carpeta está copiada, pero todavía existe en el otro repositorio. Se puede borrar usando el mismo comando del paso 4.
     
  8. Listo


No hay comentarios:

Publicar un comentario