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

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


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

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

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

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

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

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


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

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


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

关闭GitHub桌面和所有其他打开文件的应用程序到当前目录路径。 如上所述,将整个目录移动到新目录位置。 打开GitHub桌面,点击蓝色(!)“仓库未找到”图标。然后将打开一个对话框,你将看到一个“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步中,您实际上只是提供了一个搜索路径,搜索将自动包括所有子文件夹。如果你有多个回购组织在一个单一的根目录下(独立的回购只是有相同的父文件夹),那么选择父文件夹将包括在该目录下找到的所有回购。

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

在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状态—瓷器”在子模块子项目失败

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


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

关闭Visual Studio。 移动代码(包括git文件夹等) 单击新位置的解决方案文件

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


未来报告:2018年4月。

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

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

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


I use Github Desktop for Windows and I wanted to move location of a repository. No problem if you move your directory and choose the new location in the software. But if you set a bad directory, you get a fatal error and no second chance to make a relocation to the good one. So to repair that. You must copy project files in the bad directory, make its reconize by Github Desktop, after that, you can move again your project in another folder and make a relocate in the software. No need to close Github Desktop for that, it will check folders in live.

希望这能帮助到一些人。


虽然前面的答案似乎都说你可以移动目录,在.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 -la或者ls -al

-识别这个文件夹

**.git**

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

$ mv .git你想要的目录

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


如果你使用Visual Studio,使用Teams Explorer > Connect选项卡> Local Git Repositories中的Add来将现有的本地回购带到可用的回购中。不吵闹,不麻烦。


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

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

删除本地存储库中的所有数据 git状态(我必须说它没有链接到任何)

链接到一个新的远程存储库

git init启动本地存储库 Git远程添加原始urlrepository。链接到远程存储库 git remote -v确认它链接到远程存储库

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

Git pull或Git pull origin master——allow-unrelated-histories(如果本地和远程repo中的Git历史不同)。 git添加。 git commit -m" Message " Git push -u origin master


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

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

然后像往常一样使用git。