28

我正在开发一个项目,每个人都将SVN其用作集中式服务器,并且每个人都推送他们在该服务器上所做的更改。我想在Git本地使用,我对git svn. 我做了一个git svn clone存储库,git svn clone -r HEAD https://svn.repo/app/branch我想通过 git 进行更新。

我需要一个“git pull like”命令,但要从 SVN 服务器 repo 的特定版本中提取。还有一个 'fetch like' 命令可以从 SVN 服务器 repo 的特定版本中获取吗?

.svn我的克隆项目中没有任何文件夹,git remote也没有给我任何东西。但是我做了一个git config -l并且我得到了 SVN 服务器的 URL,所以我以某种方式与 SVN 服务器链接。我不知道如何获取或拉动。

谢谢!

4

2 回答 2

49

通过 Git 处理 Subversion 存储库的最佳方式:

  1. git svn init -s https://svn.repo/app/ myrepo假设在https://svn.repo/app/下repo 包含标准/trunk和子目录branchestags
  2. 在 myrepo 中执行一次git svn fetch,直到不再获取提交(可能需要相当长的时间,有时在 Windows 下会中止)。
  3. 通过签出特定的 Subversion 分支或主干git checkout -b trunk remotes/trunk

然后,您可以简单地浏览、破解并提交到包含所有 Subversion 提交和分支的 Git 存储库。

  • 要从 SVN 中提取新的提交,请使用git svn rebase
  • 要将本地提交推送到 SVN,请使用git svn dcommit

要跳转到特定的 Subversion 修订版,您只需要通过浏览历史记录git log并搜索镜像相应的 subversion 提交的提交。git-svn-id:您可以轻松地在提交消息的行中发现 Subversion 修订。只需使用 agit checkout <commithash>显式检出该版本。

于 2013-05-31T13:18:51.047 回答
13

一个好的开始:

获取新的 svn commit 到你的本地仓库:git svn rebase

将本地提交推送到 SVN :git svn dcommit

当您的工作副本有未提交的更改时,您可能必须在使用上述两个命令之前使用git stashand 。git stash pop

于 2013-05-31T13:13:56.310 回答