Cambiar la ubicación del directorio del repositorio de Git.

200

Con Git / Github para Windows, si tengo un repositorio con este directorio: C:\dir1\dir2¿qué debo hacer para mover los archivos de repositorio C:\dir1? Obviamente, puedo copiar y pegar físicamente los archivos, pero ¿qué debo hacer en el lado de Git?

Tengo este repositorio en GitHub y uso Git Bash y GitHub para Windows.

Mikael Engver
fuente
1
Mira esta respuesta , es lo mismo para pasar a otra carpeta u otra computadora.
Rekenerd

Respuestas:

234

Simplemente copie todo el contenido del directorio de trabajo (incluido el .gitdirectorio oculto ). Esto moverá todo el directorio de trabajo al nuevo directorio y no afectará el repositorio remoto en GitHub.

Si está utilizando GitHub para Windows, puede mover el repositorio utilizando el método anterior. Sin embargo, cuando hace clic en el repositorio en la aplicación, no podrá encontrarlo. Para resolver esto, simplemente haga clic en el círculo azul con!, Seleccione Buscar y luego busque el nuevo directorio.

ctor
fuente
3
Pero, ¿qué tal cómo GitHub para Windows rastrea el repositorio local? Tiene que haber alguna configuración en ese extremo.
3
Cuando hice esto en Windows me obligó a crear un nuevo repositorio.
472084
1
@Jleagle, pueden haberlo cambiado desde que se publicó esta respuesta. Echaré un vistazo y actualizaré mi respuesta si es necesario.
ctor
2
No debería pedirte que crees un nuevo repositorio: si eso sucedió, obviamente te perdiste un archivo git (quizás uno oculto). Me pasó a mí, y cuando lo intenté nuevamente noté que me había perdido algo.
Juan
1
Estoy en Win Después de mover la carpeta manualmente a una nueva ubicación, volví a abrir la aplicación Git GUI y reubiqué la carpeta del proyecto manualmente allí también. De esta manera me funciona.
kuncevic.dev
42

No estoy seguro de la pregunta, así que aquí hay dos respuestas:

Si quieres mover tu repositorio:

Simplemente copie todo el repositorio (con su .gitdirectorio).

No hay una ruta absoluta en la .gitestructura y nada impide que se mueva, por lo que no tiene nada que hacer después del movimiento. Todos los enlaces a github (ver en .git/config) funcionarán como antes.

Si desea mover archivos dentro del repositorio:

Simplemente mueva los archivos. Luego agregue los cambios enumerados en git status. El próximo commithará lo necesario. Te alegrará saber que ningún archivo se duplicará: mover un archivo en git es casi gratis.

Denys Séguret
fuente
1
Pero, ¿qué tal cómo GitHub para Windows rastrea el repositorio local? Tiene que haber alguna configuración en ese extremo.
@ user596075 está en el .gitdirectorio.
OrangeDog
24

Si está utilizando GitHub Desktop, simplemente siga los siguientes pasos:

  1. Cierre GitHub Desktopy todas las demás aplicaciones con archivos abiertos en su ruta de directorio actual.
  2. Mueva todo el directorio como se mencionó anteriormente a la nueva ubicación del directorio.
  3. Abra GitHub Desktopy haga clic en el icono azul (!) "Repositorio no encontrado". Luego se abrirá un cuadro de diálogo y verá un botón "Localizar ..." que abrirá una ventana emergente que le permitirá dirigir su ruta a una nueva ubicación.
Mikael Engver
fuente
8

Si bien la pregunta involucra a Git para Windows, este parece ser el mejor resultado, incluso cuando se busca Visual Studio Tools para Git (extensión en VS 2012, soporte nativo en VS 2013).

Utilizando las soluciones anteriores como guía, determiné que Visual Studio Git Tools hace que mover repositorios (o incluso toda la estructura de directorios para todos los repositorios) localmente sea muy fácil.

1) Cierra Visual Studio. 2) Mueva las carpetas Repo a la nueva ubicación. 3) Abra Visual Studio. Abra Team Explorer. Cambie a la vista "Conectar" (icono de enchufe en la parte superior). 3a) Si Repos aún muestra la ruta anterior, haga clic en Actualizar para forzar una actualización. 4) Los repositorios que se movieron localmente ya no deberían mostrarse en " Repositorios locales de Git ". 5) Haga clic en Agregar (no nuevo o clonar) y seleccione la carpeta de repositorio para agregar.

En el paso 5, realmente solo proporciona una ruta de búsqueda y la búsqueda incluye automáticamente todas las subcarpetas. Si tiene múltiples repositorios organizados en una sola raíz (repositorios independientes que solo tienen la misma carpeta principal), al seleccionar el principal se incluirán todos los repositorios que se encuentran debajo de eso.

Ejemplo: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

En Visual Studio Team Explorer [Agregar]> "E: \ Repos \"> [Agregar] devolverá los tres a los repositorios locales.

Gerald Davis
fuente
6

Aunque las respuestas anteriores parecen decir que puede mover el directorio y no hay rutas absolutas en la estructura .git. Encontré que esto no es cierto cuando uso git de Cygwin.

Cuando moví mi repositorio de git (de hecho, lo restauré de una copia de seguridad, pero a una unidad diferente ya que la estructura de mi unidad cambió en mi nuevo sistema). Recibí un mensaje de error como

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

Utilicé grep para encontrar que en mi archivo .git / config en la sección [core] hay una variable de árbol de trabajo que contiene la ruta absoluta de mi repositorio git. Cambiar esto solucionó el problema para mí.

Phil Rosenberg
fuente
4

Utilizo el complemento git de Visual Studio, y tengo algunos sitios web que se ejecutan en IIS que quería mover. Una manera simple que funcionó para mí:

  1. Cierra Visual Studio.

  2. Mueva el código (incluida la carpeta git, etc.)

  3. Haga clic en el archivo de la solución desde la nueva ubicación

Esto actualiza la asignación a la nueva ubicación, utilizando los archivos git locales existentes que se movieron. Una vez que volví a Visual Studio, mi ventana de Team Explorer mostró los repositorios en la nueva ubicación.

Ben
fuente
2

Utilizo Github Desktop para Windows y quería mover la ubicación de un repositorio. No hay problema si mueve su directorio y elige la nueva ubicación en el software. Pero si configura un directorio incorrecto, obtiene un error fatal y no hay una segunda oportunidad para reubicarse en el directorio correcto. Entonces para reparar eso. Debe copiar los archivos del proyecto en el directorio incorrecto, hacer que Github Desktop lo reconozca, después de eso, puede mover nuevamente su proyecto a otra carpeta y realizar una reubicación en el software. No es necesario cerrar Github Desktop para eso, verificará las carpetas en vivo.

Esperando que esto ayude a alguien.

Shim-Sao
fuente
1

Esto no funcionó para mí. Moví un repositorio de (p. Ej.) C: \ project1 \ a c: \ repo \ project1 \ y Git para Windows no muestra ningún cambio.

El estado de git muestra un error porque uno de los submódulos "no es un repositorio de git" y muestra la ruta anterior. por ejemplo (nombres cambiados para proteger IP)

fatal: no es un repositorio git: C: /project1/.git/modules/subproject/subproject2 fatal: 'git status --porcelain' falló en el subproyecto submódulo

Tuve que editar manualmente los archivos .git en los submódulos para señalar la ruta relativa correcta al repositorio del submódulo (en el directorio principal del repositorio .git / modules)

Chris Oates
fuente
1

Informe del futuro: abril de 2018.

Quería normalizar mis repositorios locales en mi Mac y mi Windows, que habían terminado en diferentes carpetas locales.

El cliente de Windows 10 me hizo pasar por la rutina "No puedo encontrar"> "Localizar", tediosa pero no terrible. También es necesario actualizar la "ruta de clonación" local en Opciones para uso futuro.

Cuando consolidé las carpetas de mac, el cliente de Github las encontró nuevamente, ¡no tenía que hacer nada!

Charles Ross
fuente
0

Para establecer la ruta local predeterminada a sus repositorios por cada vez que clone uno de ellos, solo debe clonar un repositorio una vez y establecer Localpath: / your-path, luego github detectará automáticamente esa ruta como predeterminada.

BOjack
fuente
Esto no parece responder a la pregunta original, ¿tal vez pueda aclarar cómo su respuesta agrega algo a la respuesta ya aceptada? Gracias.
rwp
0

Un enfoque más basado en Git sería hacer los cambios en su copia local usando cdo copiar y pegar y luego empujar estos cambios del repositorio local al remoto.

Si intenta verificar el estado de su repositorio local, puede mostrar "cambios no rastreados" que en realidad son los archivos reubicados. Para impulsar estos cambios con fuerza, debe organizar estos archivos / directorios usando

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

Espero eso ayude.

Pe Dro
fuente