Altere o local do diretório do repositório Git.

200

Com o Git / Github for Windows, se eu tiver um repositório com este diretório:, C:\dir1\dir2o que preciso fazer para mover os arquivos de repo C:\dir1? Obviamente, posso copiar e colar fisicamente os arquivos, mas o que preciso fazer no lado do Git?

Eu tenho esse repositório no GitHub e uso o Git Bash e o GitHub para Windows.

Mikael Engver
fonte
1
Veja esta resposta , é a mesma coisa para mudar para outra pasta ou outro computador.
rekenerd

Respostas:

234

Simplesmente copie todo o conteúdo do diretório ativo (incluindo o .gitdiretório oculto ). Isso moverá todo o diretório ativo para o novo diretório e não afetará o repositório remoto no GitHub.

Se você estiver usando o GitHub for Windows, poderá mover o repositório usando o método acima. No entanto, quando você clica no repositório no aplicativo, ele não consegue encontrá-lo. Para resolver isso, basta clicar no círculo azul com o!, Selecione Localizar e, em seguida, navegue até o novo diretório.

ctor
fonte
3
Mas e como o GitHub For Windows controla o repositório local? Tem que haver alguma configuração nesse sentido.
3
Quando fiz isso no Windows, ele me forçou a criar um novo repositório.
472084
1
@Jleagle, Eles podem ter mudado desde que esta resposta foi publicada. Vou dar uma olhada e atualizar minha resposta, se necessário.
ctor
2
Não deve pedir para você criar um novo repositório: se isso aconteceu, você obviamente perdeu um arquivo git (talvez um arquivo oculto). Aconteceu comigo e, quando tentei novamente, notei que havia perdido alguns.
Juan
1
Eu estou no Win. Depois que mudei a pasta manualmente para um novo local, reabri o Git GUI App e mudei a pasta do projeto manualmente para lá também. Desta forma, funciona para mim.
kuncevic.dev
42

Não tenho certeza da pergunta, então aqui estão duas respostas:

Se você deseja mover seu repositório:

Simplesmente copie o repositório inteiro (com seu .gitdiretório).

Não há caminho absoluto na .gitestrutura e nada impede que ela seja movida; portanto, você não precisa fazer nada depois da mudança. Todos os links para o github (veja em .git/config) funcionarão como antes.

Se você deseja mover arquivos dentro do repositório:

Simplesmente mova os arquivos. Em seguida, adicione as alterações listadas em git status. O próximo commitfará o necessário. Você ficará feliz em saber que nenhum arquivo será duplicado: mover um arquivo no git é quase gratuito.

Denys Séguret
fonte
1
Mas e como o GitHub For Windows controla o repositório local? Tem que haver alguma configuração nesse sentido.
@ user596075 está no .gitdiretório
OrangeDog
24

Se você estiver usando GitHub Desktop, execute as seguintes etapas:

  1. Feche GitHub Desktope todos os outros aplicativos com arquivos abertos no caminho do diretório atual.
  2. Mova o diretório inteiro como mencionado acima para o novo local do diretório.
  3. Abra GitHub Desktope clique no ícone azul (!) "Repositório não encontrado". Em seguida, uma caixa de diálogo será aberta e você verá o botão "Localizar ...", que abrirá um pop-up, permitindo que você direcione seu caminho para um novo local.
Mikael Engver
fonte
8

Embora a questão envolva o Git para Windows, esse parece ser o principal resultado, mesmo ao pesquisar as Ferramentas do Visual Studio para Git (extensão no VS 2012, suporte nativo no VS 2013).

Usando as soluções acima como guia, determinei que o Visual Studio Git Tools facilita muito a movimentação de repositórios (ou mesmo a estrutura de diretórios inteira de todos os repositórios) localmente.

1) Feche o Visual Studio. 2) Mova as pastas de repositório para um novo local. 3) Abra o Visual Studio. Abra o Team Explorer. Mude para a visualização "Conectar" (conecte o ícone na parte superior). 3a) Se os repositórios ainda mostrarem o caminho antigo, clique em Atualizar para forçar uma atualização. 4) Os repositórios que foram movidos localmente não devem mais ser exibidos em " Local Git Repositories ". 5) Clique em Adicionar (não é novo ou clone) e selecione a pasta de recompra a ser adicionada.

Na etapa 5, você realmente está apenas fornecendo um caminho de pesquisa e a pesquisa inclui automaticamente todas as subpastas. Se você tiver vários repositórios organizados em uma única raiz (repositórios independentes apenas com a mesma pasta pai), a seleção do pai incluirá todos os repositórios encontrados abaixo.

Exemplo: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

No Visual Studio Team Explorer [Adicionar]> "E: \ Repos \"> [Adicionar] retornará todos os três para os repositórios locais.

Gerald Davis
fonte
6

Embora todas as respostas anteriores pareçam dizer que você pode simplesmente mover o diretório e não há caminhos absolutos na estrutura .git. Achei isso falso, ao usar o git do Cygwin.

Quando mudei meu repositório git (na verdade, eu o restaurei de um backup, mas para uma unidade diferente conforme minha estrutura de unidades mudou no meu novo sistema). Recebi uma mensagem de erro como

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

Eu usei o grep para descobrir que no meu arquivo .git / config na seção [core] é uma variável da árvore de trabalho que contém o caminho absoluto do meu repositório git. Alterar isso corrigiu o problema para mim.

Phil Rosenberg
fonte
4

Eu uso o plug-in git do Visual Studio e tenho alguns sites em execução no IIS que queria mover. Uma maneira simples que funcionou para mim:

  1. Feche o Visual Studio.

  2. Mova o código (incluindo a pasta git, etc)

  3. Clique no arquivo da solução no novo local

Isso atualiza o mapeamento para o novo local, usando os arquivos git locais existentes que foram movidos. Quando voltei ao Visual Studio, minha janela do Team Explorer mostrou os repositórios no novo local.

Ben
fonte
2

Eu uso o Github Desktop para Windows e queria mover a localização de um repositório. Não há problema se você mover seu diretório e escolher o novo local no software. Mas se você definir um diretório incorreto, receberá um erro fatal e não terá uma segunda chance de realocar o bom. Então, para reparar isso. Você deve copiar os arquivos do projeto no diretório incorreto, reconfigurá-lo pelo Github Desktop; depois disso, você pode mover novamente o seu projeto em outra pasta e realocar no software. Não é necessário fechar o Github Desktop para isso, ele verificará as pastas ao vivo.

Esperando que isso ajude alguém.

Shim-Sao
fonte
1

Isto não funcionou para mim. Mudei um repositório de (por exemplo) c: \ project1 \ para c: \ repo \ project1 \ e o Git for windows não mostra nenhuma alteração.

O status git mostra um erro porque um dos submódulos "não é um repositório git" e mostra o caminho antigo. por exemplo (nomes alterados para proteger o IP)

fatal: Não é um repositório git: C: /project1/.git/modules/subproject/subproject2 fatal: 'git status --porcelain' falhou no subprojeto do submódulo

Eu tive que editar manualmente os arquivos .git nos submódulos para apontar para o caminho relativo correto para o repositório do submódulo (no diretório .git / modules do repositório principal)

Chris Oates
fonte
1

Relatório do futuro: abril de 2018.

Eu queria normalizar meus repositórios locais no Mac e no Windows, que acabaram em diferentes pastas locais.

O cliente Windows 10 me fez passar pela rotina "Não é possível encontrar"> "Localizar", tediosa, mas não terrível. Também é necessário atualizar o "caminho Clone" local em Opções para uso futuro.

Quando consolidei as pastas do Mac, o cliente Github as encontrou novamente - eu não precisava fazer nada!

Charles Ross
fonte
0

Para definir o caminho local padrão para seus repositórios toda vez que você clonar um deles, você deve clonar um repositório apenas uma vez e definir Localpath: / your-path, para que o github detecte automaticamente esse caminho como padrão.

BOjack
fonte
Isso não parece responder à pergunta original - talvez você possa esclarecer como sua resposta adiciona algo à resposta já aceita? Obrigado.
Rwp
0

Uma abordagem mais baseada em Git seria fazer as alterações em sua cópia local usando cdou copiando e colando e, em seguida, enviando essas alterações do repositório local para o remoto.

Se você tentar verificar o status do seu repositório local, ele poderá mostrar "alterações não rastreadas", que são realmente os arquivos realocados. Para forçar essas alterações com força, você precisa preparar esses arquivos / diretórios 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 que ajude.

Pedro
fonte