对于Windows的Git / Github,如果我的存储库具有以下目录:C:\dir1\dir2
,将存储库文件移动到C:\dir1
什么位置?我显然可以物理地复制和粘贴文件,但是在Git端我需要做什么?
我在GitHub上有这个仓库,我在Windows上使用Git Bash和GitHub。
对于Windows的Git / Github,如果我的存储库具有以下目录:C:\dir1\dir2
,将存储库文件移动到C:\dir1
什么位置?我显然可以物理地复制和粘贴文件,但是在Git端我需要做什么?
我在GitHub上有这个仓库,我在Windows上使用Git Bash和GitHub。
Answers:
只需复制整个工作目录的内容(包括隐藏.git
目录)。这会将整个工作目录移动到新目录,并且不会影响GitHub上的远程存储库。
如果您将GitHub用于Windows,则可以使用上述方法移动存储库。但是,当您在应用程序中单击存储库时,将无法找到它。要解决此问题,只需单击带有!的蓝色圆圈,选择“查找”,然后浏览到新目录。
我不确定这个问题,因此有两个答案:
如果要移动存储库:
只需复制整个存储库(及其.git
目录)。
.git
结构中没有绝对路径,也没有阻止它移动的东西,因此移动后您无需执行任何操作。到github的所有链接(请参阅参考资料.git/config
)将像以前一样工作。
如果要在存储库中移动文件:
只需移动文件。然后添加中列出的更改git status
。接下来commit
将做必要的事情。您将很高兴得知不会复制任何文件:在git中移动文件几乎是没有成本的。
.git
目录中。
如果您使用GitHub Desktop
,则只需执行以下步骤:
GitHub Desktop
并打开所有其他具有打开文件的应用程序到当前目录路径。GitHub Desktop
并单击蓝色(!)“未找到存储库”图标。然后将打开一个对话框,您将看到“定位...”按钮,该按钮将打开一个弹出窗口,您可以将其路径定向到新位置。尽管问题涉及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 \”> [添加]将全部三个都返回到本地存储库。
尽管以上所有答案似乎都表明您可以移动目录,但.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的绝对路径。更改此设置对我来说已经解决了问题。
这对我不起作用。我将一个仓库从(例如)c:\ project1 \移到了c:\ repo \ project1 \,而Windows的Git没有显示任何更改。
git status显示错误,因为其中一个子模块“不是git存储库”并显示旧路径。例如(名称更改为保护IP)
致命:不是git存储库:C:/project1/.git/modules/subproject/subproject2致命:'git status --porcelain'在子模块子项目中失败
我必须手动编辑子模块中的.git文件,以指向子模块的仓库的正确相对路径(在主仓库的.git / modules目录中)