Git从GitHub上的存储库签出到基于SVN的现有本地存储库

Git从GitHub上的存储库签出到基于SVN的现有本地存储库,git,svn,version-control,github,Git,Svn,Version Control,Github,我最近将一个项目从Subversion迁移到GitHub,但是当前工作的本地目录仍然是一个SVN本地存储库。由于复杂的原因,创建一个新的git克隆本地存储库是不好的,那么有没有办法从GitHub签出git存储库呢 现在它给了我一个错误: fatal: Not a git repository (or any parent up to mount parent ) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM no

我最近将一个项目从Subversion迁移到GitHub,但是当前工作的本地目录仍然是一个SVN本地存储库。由于复杂的原因,创建一个新的git克隆本地存储库是不好的,那么有没有办法从GitHub签出git存储库呢

现在它给了我一个错误:

fatal: Not a git repository (or any parent up to mount parent )
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)
显然,因为我没有使用git本地存储库。

您无法创建git存储库的“SVN签出”

在git中,克隆存储库包括其所有历史记录。git工具依赖于此来执行其功能。在SVN中,所有历史记录都在服务器上,本地端只是一个工作副本

您必须执行一个
git克隆
。与SVN工作原理最接近的仿制品是使用--depth=1进行克隆,但由此产生的签出将严重受损

如果你想做与你要求相反的事情——也就是说,你想使用一个本地git客户机和一个上游SVN存储库——答案是
git SVN

如果你只是想减少下载量——你只说了“复杂的原因”,所以我不能解释你的动机——仅仅保存本地文件是不够的。正如我提到的,git不仅存储文件的最新版本,还存储过去的每个版本。无论您做什么,都必须下载以前的版本信息

  • Subversion工作目录中的
    git init
    将使其成为git存储库
  • git-remote-add-origin
    ,其中
    是来自GitHub的HTTPS或SSH路径,将连接本地存储库到GitHub
  • git-fetch-origin
    将使用GitHub的所有历史记录更新本地git存储库
  • git reset origin/master
    会将您的本地主分支指向来自origin的最新主分支,而不会更改您的文件

  • 此时,
    git status
    将向您显示本地工作目录与GitHub上的目录之间的任何差异。

    听起来您的核心问题是,您试图以这种方式保持Subversion和git存储库的同步,git应该只是Subversion存储库的附加视图。如果是这种情况,SubGit可能是一种解决方案:它提供了Subversion存储库的Git镜像,因此您可以在拥有额外Git存储库的同时继续使用机器上的Subversion。

    如果项目确实迁移到GitHub,则SubGit不是一个选项。GitHub还支持将Subversion用作客户端: