更改Git存储库目录位置。


200

对于Windows的Git / Github,如果我的存储库具有以下目录:C:\dir1\dir2,将存储库文件移动到C:\dir1什么位置?我显然可以物理地复制和粘贴文件,但是在Git端我需要做什么?

我在GitHub上有这个仓库,我在Windows上使用Git Bash和GitHub。


1
查看此答案,移至另一个文件夹或另一台计算机是相同的。
拒绝

Answers:


234

只需复制整个工作目录的内容(包括隐藏.git目录)。这会将整个工作目录移动到新目录,并且不会影响GitHub上的远程存储库。

如果您将GitHub用于Windows,则可以使用上述方法移动存储库。但是,当您在应用程序中单击存储库时,将无法找到它。要解决此问题,只需单击带有!的蓝色圆圈,选择“查找”,然后浏览到新目录。


3
但是GitHub For Windows如何跟踪本地存储库呢?为此必须有一些配置。

3
当我在Windows上执行此操作时,它迫使我创建了一个新的存储库。
472084

1
@Jleagle,自发布此答案以来,他们可能已更改它。我会看一下,并在必要时更新我的​​答案。
ctor

2
它不应该要求您创建一个新的仓库:如果发生这种情况,您显然错过了一个git文件(也许是一个隐藏的文件)。发生在我身上,当我再次尝试时,我发现我错过了一些。
胡安

1
我在赢。手动将文件夹移动到新位置后,我重新打开了Git GUI App,并在此处手动重新定位了项目文件夹。这样对我有用。
kuncevic.dev 2015年

42

我不确定这个问题,因此有两个答案:

如果要移动存储库:

只需复制整个存储库(及其.git目录)。

.git结构中没有绝对路径,也没有阻止它移动的东西,因此移动后您无需执行任何操作。到github的所有链接(请参阅参考资料.git/config)将像以前一样工作。

如果要在存储库中移动文件:

只需移动文件。然后添加中列出的更改git status。接下来commit将做必要的事情。您将很高兴得知不会复制任何文件:在git中移动文件几乎是没有成本的。


1
但是GitHub For Windows如何跟踪本地存储库呢?为此必须有一些配置。

@ user596075,它在.git目录中。
OrangeDog

24

如果您使用GitHub Desktop,则只需执行以下步骤:

  1. 关闭GitHub Desktop并打开所有其他具有打开文件的应用程序到当前目录路径。
  2. 如上所述,将整个目录移动到新目录位置。
  3. 打开GitHub Desktop并单击蓝色(!)“未找到存储库”图标。然后将打开一个对话框,您将看到“定位...”按钮,该按钮将打开一个弹出窗口,您可以将其路径定向到新位置。

8

尽管问题涉及Windows的Git,但即使搜索Visual Studio Tools for Git(VS 2012中的扩展程序,VS 2013中的本机支持),这似乎也是最好的结果。

使用以上解决方案作为指导,我确定Visual Studio Git Tools使本地移动存储库(甚至所有存储库的整个目录结构)变得非常容易。

1)关闭Visual Studio。2)将Repo文件夹移动到新位置。3)打开Visual Studio。打开团队资源管理器。切换到“连接”视图(顶部的插头图标)。3a)如果Repos仍​​然显示旧路径,请单击Refresh强制更新。4)在本地移动的存储库不应再显示在“ 本地Git存储库 ”中。5)单击添加(不是新的或克隆的),然后选择要添加的repo文件夹。

在第5步中,您实际上只是提供了搜索路径,并且搜索自动包括了所有子文件夹。如果您在单个根目录下组织了多个存储库(独立存储库仅具有相同的父文件夹),则选择父存储库将包括在此目录下找到的所有存储库。

示例:E:\ Repos \ RepoA E:\ Repos \ RepoB E:\ Repos \ RepoC

在Visual Studio Team Explorer中,[添加]>“ E:\ Repos \”> [添加]将全部三个都返回到本地存储库。


6

尽管以上所有答案似乎都表明您可以移动目录,但.git结构中没有绝对路径。使用Cygwin的git时,我发现这是不正确的。

当我移动git repo时(实际上,我从备份中还原了它,但是随着新系统上驱动器结构的改变,它又移到了另一个驱动器上)。我收到类似的错误消息

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

我使用grep在[core]部分的.git / config文件中发现是一个工作树变量,该变量保存了git repo的绝对路径。更改此设置对我来说已经解决了问题。


4

我使用Visual Studio git插件,并且有一些要在IIS上运行的网站。一种对我有用的简单方法:

  1. 关闭Visual Studio。

  2. 移动代码(包括git文件夹等)

  3. 从新位置单击解决方案文件

这将使用已移动的现有本地git文件将映射刷新到新位置。回到Visual Studio之后,“团队资源管理器”窗口在新位置显示了仓库。


2

我使用Windows的Github Desktop,我想移动存储库的位置。如果移动目录并在软件中选择新位置,则没有问题。但是,如果您设置了错误的目录,则会出现致命错误,并且没有第二次机会将其重定位到正确的目录。所以要修复它。您必须将项目文件复制到错误的目录中,并通过Github Desktop对其进行检查,之后,您可以再次将项目移至另一个文件夹中,并在软件中进行重新定位。无需为此关闭Github Desktop,它将实时检查文件夹。

希望这会帮助某人。


1

这对我不起作用。我将一个仓库从(例如)c:\ project1 \移到了c:\ repo \ project1 \,而Windows的Git没有显示任何更改。

git status显示错误,因为其中一个子模块“不是git存储库”并显示旧路径。例如(名称更改为保护IP)

致命:不是git存储库:C:/project1/.git/modules/subproject/subproject2致命:'git status --porcelain'在子模块子项目中失败

我必须手动编辑子模块中的.git文件,以指向子模块的仓库的正确相对路径(在主仓库的.git / modules目录中)


1

未来报告:2018年4月。

我想在Mac和Windows上标准化本地存储库,这些存储库最终存放在不同的本地文件夹中。

Windows 10客户端使我经历了“找不到”>“查找”例程,这很乏味但并不可怕。还需要更新“选项”中的本地“克隆路径”以供将来使用。

当我合并mac文件夹时,Github客户端再次找到了它们-我什么也不做!


0

要在每次克隆存储库时为存储库设置默认的本地路径,您只需复制一个存储库并设置Localpath:/ your-path,然后github就会自动将该路径检测为默认路径。


这似乎无法回答原始问题-也许您可以澄清您的答案如何为已经接受的答案添加一些内容?谢谢。
rwp

0

一种基于Git的方法是使用cd或复制和粘贴对本地副本进行更改,然后将这些更改从本地存储库推送到远程存储库。

如果您尝试检查本地存储库的状态,它可能会显示“未跟踪的更改”,它们实际上是已重定位的文件。要强行推送这些更改,您需要使用以下命令暂存这些文件/目录

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

希望能帮助到你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.