更改Git存储库目录位置。

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

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

364981 次浏览

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

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

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

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

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

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

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

如果你正在使用GitHub for Windows,你可以使用上面的方法移动存储库。但是,当您单击应用程序中的存储库时,将无法找到它。要解决这个问题,只需单击带!的蓝色圆圈,选择Find It,然后浏览到新目录。

如果你正在使用GitHub Desktop,那么只需要执行以下步骤:

  1. 关闭GitHub Desktop和所有其他打开文件的应用程序到当前目录路径。
  2. 如上所述,将整个目录移动到新目录位置。
  3. 打开GitHub Desktop,然后点击蓝色的(!)“仓库未找到”图标。然后将打开一个对话框,你将看到一个“Locate…”按钮,它将打开一个弹出窗口,允许你将其路径指向新的位置。

虽然这个问题涉及到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步中,您实际上只是提供了一个搜索路径,搜索将自动包括所有子文件夹。如果你有多个回购组织在一个单一的根目录下(独立的回购只是有相同的父文件夹),那么选择父文件夹将包括在该目录下找到的所有回购。

< p >的例子: E: \回购\ RepoA E: \回购\ RepoB E: \回购\ RepoC < / p >

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

这对我没用。我将一个repo从(例如)c:\project1\移动到c:\repo\project1\, Git for windows没有显示任何变化。

Git状态显示错误,因为其中一个子模块“不是Git存储库”,并显示旧路径。例如(为保护知识产权而更改名称)

C:/project1/.git/modules/subproject/subproject2 致命:'git status——porcelain'失败在子模块子项目

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

我使用Visual Studio git插件,我有一些网站运行在IIS上,我想移动。一个简单的方法对我很有效:

  1. 关闭Visual Studio。

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

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

这将使用已移动的现有本地git文件刷新到新位置的映射。当我回到Visual Studio时,我的团队资源管理器窗口显示了新位置的回购。

未来报告:2018年4月。

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

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

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

我使用Github桌面Windows,我想移动存储库的位置。如果您移动目录并在软件中选择新的位置,则没有问题。但是如果你设置了一个坏的目录,你会得到一个致命的错误,并且没有第二次机会重新定位到一个好的目录。为了修复它。你必须复制坏目录中的项目文件,使其通过Github Desktop识别,之后,你可以再次移动你的项目在另一个文件夹中,并在软件中进行重新定位。没有必要关闭Github桌面,它将检查文件夹在生活。

希望这能帮助到一些人。

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

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

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

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

更基于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

希望能有所帮助。

-首先检查当前文件夹中包含git repo的所有目录 $ ls拉ls状态”

-识别这个文件夹

**.git**

-使用此命令移动文件夹到您需要的位置,

$ mv .git 你想要的目录

注意:>目录不会影响git历史,也不会影响远程连接 考虑树(< >强路径< / >强)到你要移动到的目录

如果你使用Visual Studio,使用Teams Explorer中的Add;连接标签>本地Git存储库将现有的本地回购带到可用的回购中。不吵闹,不麻烦。

将本地存储库链接到不同的远程存储库

< p > 1 - 删除与远程存储库的所有连接: 在项目文件夹内:

  • git rm .git(从本地存储库中删除所有数据)
  • git status(我必须说它没有链接到任何)

2 - 链接到新的远程存储库

  • git init启动本地存储库
  • git remote add origin urlrepository.git链接到远程存储库
  • git remote -v确认它链接到远程存储库

3 - 向本地存储库添加更改并推送

  • git pullgit pull origin master --allow-unrelated-histories,如果本地和远程回购中的git历史记录不同。
  • git add.
  • git commit -m" Message "
  • git push -u origin master

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

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

然后像往常一样使用git。