258

使用适用于 Windows 的 Git/Github,如果我有一个包含以下目录的存储库:C:\dir1\dir2,我需要做什么才能将 repo 文件移动到C:\dir1?我显然可以物理复制和粘贴文件,但是在 Git 端我需要做什么?

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

4

14 回答 14

309

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

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

于 2012-07-08T17:31:22.167 回答
54

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

如果要移动存储库:

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

结构中没有绝对路径,也.git没有任何东西阻止它移动,所以移动后你无事可做。所有到 github 的链接(参见 参考资料.git/config)都将像以前一样工作。

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

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

于 2012-07-08T17:01:00.827 回答
42

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

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

尽管之前的答案似乎都说您可以移动目录并且 .git 结构中没有绝对路径。在使用 Cygwin 的 git 时,我发现这是不正确的。

当我移动我的 git 存储库时(实际上我从备份中恢复了它,但是由于我的驱动器结构在我的新系统上发生了变化,所以我将它恢复到了另一个驱动器)。我收到一条错误消息,例如

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

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

于 2018-11-22T13:35:13.943 回答
10

虽然问题涉及适用于 Windows 的 Git,但即使在搜索 Visual Studio Tools For Git(VS 2012 中的扩展,VS 2013 中的本机支持)时,这似乎也是最佳结果。

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

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

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

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

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

于 2014-04-10T17:07:07.560 回答
4

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

  1. 关闭 Visual Studio。

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

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

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

于 2016-11-14T20:22:16.597 回答
3

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

希望这会对某人有所帮助。

于 2018-07-06T10:20:41.663 回答
2

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

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

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

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

于 2016-11-07T22:15:37.923 回答
1

来自未来的报告:2018 年 4 月。

我想在我的 Mac 和 Windows 上标准化我的本地存储库,它们最终位于不同的本地文件夹中。

Windows 10 客户端让我经历了“找不到”>“定位”例程,乏味但并不可怕。还需要在Options中更新本地的“Clone path”以备后用。

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

于 2018-04-09T17:09:38.467 回答
0

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

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

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

希望能帮助到你。

于 2020-02-29T17:38:44.677 回答
0

-首先检查当前文件夹中包含 git repo $ ls -lals -al的所有目录

- 识别此文件夹

**.git**

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

$ mv .git这里你要的目录

注意:>该目录不会影响 git 历史记录远程连接>考虑到您要移动到的目录的树(路径)

于 2021-03-23T09:40:12.967 回答
0

如果您使用 Visual Studio,请使用 Teams Explorer > Connect 选项卡 > Local Git Repositories 中的 Add 将现有本地存储库添加到可用存储库中。没有大惊小怪,没有麻烦。

于 2021-05-11T13:22:10.133 回答
0

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

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

  • git rm .git(从本地存储库中删除所有数据)
  • git status(我必须说它与任何东西都没有联系)

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

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

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

  • git pull或者git pull origin master --allow-unrelated-histories如果本地和远程仓库中的 git 历史记录不同。
  • git add.
  • git commit -m" Message "
  • git push -u origin master
于 2021-08-13T18:35:42.440 回答
0

如果您已经移动/修改了新目的地中的代码,但想继续使用相同的 git repo...

在 Windows 中,您只需将隐藏.git文件夹从旧位置复制粘贴到新位置即可。

然后像往常一样使用 git。

于 2021-12-11T15:13:22.237 回答