Mover un repository git

Esta pregunta puede ser tonta, pero me lo he estado preguntando por un time. Se trata de repositorys de git, pero supongo que es lo mismo para los repositorys locales de otros DVCS.

Digamos que mi proyecto es así cuando comienza:

  • Proyecto
    • .git
    • todas las otras carpetas en el proyecto

Entonces, ¿cómo funcionaría cuando lo configuraste, verdad?

Digamos que muevo la carpeta Proyecto a otra parte, ¿tendría que cambiar algo? O todo el material del repository en la carpeta .git está relacionado solo con la carpeta Project ignorando todo el tree de files sobre Project.

Estoy bastante seguro de que mover el proyecto no importaría, pero solo quería asegurarme.

Solutions Collecting From Web of "Mover un repository git"

Sí, todo en .git es relativo. Sin embargo, si ha agregado el repository como un control remoto con nombre a otro repository, tendría que cambiar la URL remota en ese otro repository.

He encontrado que los submodules no son relativos en git.

Por lo tanto, si desea mover un proyecto que contiene submodules, debe editar el file .git en el submodule, así como el atributo "tree de trabajo" en el file de configuration del submodule, que se almacena en .git/modules/MODULENAME/config del padre .git/modules/MODULENAME/config file.

Mostrar el control remoto actual (este es un paso opcional por supuesto):

 $ git remote show origin * remote origin URL: git@oldserver:project.git Remote branch(es) merged with 'git pull' while on branch master master Tracked remote branches master 

Lo que tenemos que hacer es eliminar el origen actual y agregar el nuevo:

 $ git remote rm origin $ git remote add origin git@newserver:project.git $ git remote show origin * remote origin URL: git@newserver:project.git Remote branch(es) merged with 'git pull' while on branch master master error: refs/remotes/origin/HEAD points nowhere! New remote branches (next fetch will store in remotes/origin) master 

No te preocupes por el error que muestra el último command. La primera extracción desde el origen lo arreglará:

 $ git pull From git@newserver:project.git * [new branch] master -> origin/master Already up-to-date. $ git remote show origin * remote origin URL: git@newserver:project.git Remote branch(es) merged with 'git pull' while on branch master master Tracked remote branches master 

Todavía estoy fresco con Git así que tal vez hay una mejor manera de hacerlo, pero esto funcionó para mí.

No, no tendrías que cambiar nada más. Es decir

  • suponiendo que ningún script establezca GIT_DIR, GIT_WORKTREE o GIT_INDEX directamente (improbable)
  • no tienes repositorys externos apuntando a esta copy

    • si lo hace, tendrá que volver a marcarlos mediante el uso de

       git remote set-url [--push] origin user@yourhost:/home/user/newlocation/Project 

(El origen debe ser el nombre del control remoto; el origen es el nombre pnetworkingeterminado al clonar desde un repository remoto)

Puede mover el directory de git de una máquina a otra o decir, desea migrar la carpeta de su proyecto.

Toda la información sobre el origen se almacena en la carpeta '.git', que se crea cuando inicializas un repository de git en un directory de tu sistema.

Procedimiento

  1. : Mueva la carpeta del proyecto a otra location.
  2. : Si la carpeta del proyecto se está moviendo a una máquina nueva, cree el par de keys SSH correspondiente.
  3. : Dile a git a quién estás usando: git config –global user.email "your_git_email_id @ youremail"