2

我最近将一个项目从 Subversion 迁移到 GitHub,但当前工作的本地目录仍然是 SVN 本地存储库。由于复杂的原因,创建一个新的 git clone 本地存储库并不好,那么有什么方法可以从 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 本地存储库。

4

3 回答 3

4
  1. git init在您的 Subversion 工作目录中将使它成为一个 git 存储库。
  2. git remote add origin <url><url>GitHub 的 HTTPS 或 SSH 路径在哪里,会将您的本地存储库连接到 GitHub。
  3. git fetch origin将使用来自 GitHub 的所有历史记录更新您的本地 Git 存储库
  4. git reset origin/master会将您的本地主分支指向来自源的最新主分支,而不会更改您的文件。

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

于 2013-01-14T22:38:36.120 回答
3

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

于 2013-01-16T14:56:46.650 回答
0

您不能创建 git 存储库的“SVN 签出”。

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

你将不得不做一个git clone. 与 SVN 工作方式最接近的仿制品是使用 --depth=1 进行克隆,但生成的结帐将严重瘫痪。

如果您想做与您所要求的相反的事情 - 也就是说,您想使用本地 git 客户端和上游 SVN 存储库 - 答案将是git-svn.

如果您只是想尽量减少重新下载的数量-您只说“复杂的原因”,所以我无法推断您的动机-仅保留本地文件是不够的。正如我所提到的,git 不仅存储文件的最新版本,还存储每个过去的修订版本。无论您做什么,都必须下载过去的版本信息。

于 2013-01-14T22:38:18.047 回答