使用Git/Github for Windows,如果我有一个存储库的这个目录:C:\dir1\dir2,我需要做什么来移动回购文件到C:\dir1?显然,我可以物理地复制和粘贴文件,但在Git端需要做什么呢?

我在GitHub上有这个回购,我使用Git Bash和GitHub for Windows。


当前回答

虽然前面的答案似乎都说你可以移动目录,在.git结构中没有绝对路径。当我使用Cygwin的git时,我发现这是不真实的。

当我移动我的git回购时(实际上我从备份中恢复了它,但由于我的驱动器结构在新系统上发生了变化)。我收到了一条错误信息

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

我使用grep在我的.git/配置文件[core]部分中找到了一个工作树变量,它保存了我的git repo的绝对路径。改变这一点为我解决了问题。

其他回答

如果你已经在新的目标中移动/修改了代码,但想要继续使用相同的git repo…

在Windows中,你可以将隐藏的.git文件夹从旧位置复制粘贴到新位置。

然后像往常一样使用git。

未来报告:2018年4月。

我想在我的Mac和Windows上规范化我的本地回购,它们最终在不同的本地文件夹中。

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

当我合并mac文件夹时,Github客户端又发现了它们-我什么都不用做!

我不确定这个问题,所以这里有两个答案:

如果你想移动你的存储库:

简单地复制整个存储库(包括它的.git目录)。

在.git结构中没有绝对路径,也没有任何东西阻止它被移动,所以在移动之后你就没有什么可做的了。所有到github的链接(参见.git/config)将像以前一样工作。

如果你想将文件移动到存储库中:

只需移动文件。然后添加git status中列出的更改。下一次提交将执行必要的操作。您将很高兴地了解到不会复制任何文件:在git中移动文件几乎是零成本的。

虽然前面的答案似乎都说你可以移动目录,在.git结构中没有绝对路径。当我使用Cygwin的git时,我发现这是不真实的。

当我移动我的git回购时(实际上我从备份中恢复了它,但由于我的驱动器结构在新系统上发生了变化)。我收到了一条错误信息

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

我使用grep在我的.git/配置文件[core]部分中找到了一个工作树变量,它保存了我的git repo的绝对路径。改变这一点为我解决了问题。

虽然这个问题涉及到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仍然显示旧路径,单击刷新强制更新。 4)本地移动的回购将不再显示在“本地Git存储库”中。 5)单击“添加”(非新建或克隆),选择要添加的repo文件夹。

在第5步中,您实际上只是提供了一个搜索路径,搜索将自动包括所有子文件夹。如果你有多个回购组织在一个单一的根目录下(独立的回购只是有相同的父文件夹),那么选择父文件夹将包括在该目录下找到的所有回购。

例子: E: \回购\ RepoA E: \回购\ RepoB E: \回购\ RepoC

在Visual Studio Team Explorer [Add] > "E:\Repos\" > [Add]将这三个都返回到本地存储库。