更改Git存储库目录位置。

时间:2012-07-08 16:57:24

标签: git github github-for-windows

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

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

13 个答案:

答案 0 :(得分:182)

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

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

答案 1 :(得分:33)

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

如果您想移动存储库:

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

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

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

只需移动文件即可。然后添加git status中列出的更改。下一个commit将做必要的事情。你会很高兴得知没有文件会被复制:用git移动文件几乎是没有成本的。

答案 2 :(得分:16)

如果您使用GitHub for Windows,请执行以下步骤:

  1. 将包含打开文件的GitHub for Windows和所有其他应用程序关闭到当前目录路径。
  2. 将上述目录移动到新目录位置。
  3. 打开GitHub for Windows,然后点击蓝色(!)“找不到存储库”图标。然后会打开一个对话框,您将看到一个“查找”按钮,您可以在其中重新定位新的存储库路径。

答案 3 :(得分:4)

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

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

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

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

实施例: E:\回购\ RepoA E:\回购\ RepoB E:\回购\ RepoC

在Visual Studio团队资源管理器中[添加]> " E:\回购\" > [添加]将全部三个返回到本地存储库。

答案 4 :(得分:2)

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

  1. 关闭Visual Studio。

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

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

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

答案 5 :(得分:2)

尽管以上所有答案似乎都表明您可以移动目录,但.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的绝对路径。更改此设置对我来说已经解决了问题。

答案 6 :(得分:1)

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

希望这对某人有帮助。

答案 7 :(得分:0)

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

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

致命:不是git存储库:C:/project1/.git/modules/subproject/subproject2 致命的:&#39; git status --porcelain&#39;子模块子项目失败

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

答案 8 :(得分:0)

未来报道:2018年4月。

我想在我的Mac和Windows上规范化我的本地存储库,这些存储库最终位于不同的本地文件夹中。

Windows 10客户端让我完成了“无法找到&#34; &GT; &#34;找到&#34;常规,乏味但不可怕。还需要更新本地&#34;克隆路径&#34;在选项中以供将来使用。

当我整合mac文件夹时,Github客户端再次发现它们 - 我不得不做任何事情!

答案 9 :(得分:0)

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

答案 10 :(得分:0)

更基于Git的方法是使用>>>>from more_itertools import set_partitions >>>>list(set_partitions(range(5), 3)) Out[2]: [[[0], [1], [2, 3, 4]], [[0], [1, 2], [3, 4]], [[0], [2], [1, 3, 4]], [[0], [1, 2, 3], [4]], [[0], [2, 3], [1, 4]], [[0], [1, 3], [2, 4]], [[0], [3], [1, 2, 4]], [[0, 1], [2], [3, 4]], [[1], [0, 2], [3, 4]], [[1], [2], [0, 3, 4]], [[0, 1], [2, 3], [4]], [[1], [0, 2, 3], [4]], [[1], [2, 3], [0, 4]], [[0, 1], [3], [2, 4]], [[1], [0, 3], [2, 4]], [[1], [3], [0, 2, 4]], [[0, 1, 2], [3], [4]], [[1, 2], [0, 3], [4]], [[1, 2], [3], [0, 4]], [[0, 2], [1, 3], [4]], [[2], [0, 1, 3], [4]], [[2], [1, 3], [0, 4]], [[0, 2], [3], [1, 4]], [[2], [0, 3], [1, 4]], [[2], [3], [0, 1, 4]]] 对本地副本进行更改,或复制并粘贴,然后将这些更改从本地推送到远程存储库。

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

暂存这些文件/目录
n=500; k=12; ele_arr = list(range(n)); np.random.shuffle(ele_arr);

output = [[] for i in range(k)]
for i, e in enumerate(ele_arr):
    # have to ensure that each partition has at least one element
    if i < k:
        output[i].append(e)
    else:
        j = np.random.randint(0, k-1)
        output[j].append(e)

希望有帮助。

答案 11 :(得分:0)

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

-识别此文件夹

**.git**

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

$ mv .git 你想要的目录

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

答案 12 :(得分:0)

如果您使用 Visual Studio,请使用“团队资源管理器”>“连接”选项卡 >“本地 Git 存储库”中的“添加”将现有本地存储库引入可用存储库。没有大惊小怪,没有麻烦。