我有一个Git repo,它是从另一个Git仓库中克隆出来的,它是一个巨型SVN仓库的克隆。我们可以从SVN更新其他Git仓库,并将其从SVN提交给SVN,但是与其他用户进行交易。如何告诉Git两个提交在一个不相交的历史中实际上是相同的?
我想用我自己的用户直接发布我的本地提交到SVN仓库。
这就是我想:我手动创建git-svn
分支,加入这.git/config
[branch "master"]
[svn-remote "svn"]
url = https://url/to/svn/trunk/repo_name
fetch = :refs/remotes/git-svn
然后git svn fetch
,下载32K的提交。
但我结束了两个不相交的历史:
- 一个从SVN:
- 在提交
674c35a
表示SVN回购协议的原始克隆点的状态开始。 - 分支
master
始终与SVN同步(通过其他Git仓库)。 - 分支
dev
有我们目前的进展,应该合并到master
(通常是压扁),然后再回到SVN回购。
- 在提交
- 一个用于SVN回购的:
- 开始与适当的初始提交。
- 它有30k +提交。
- Git最初从SVN [
fb1b9c7
]克隆的提交(但只有前一个提交的差异,而不是整个回购作为开始提交)。 - 然后相同的承诺(100+)应该是共同的
git/origin/master
。
我怎么能告诉混帐的起点提交(674c35a
)实际上是相同的SVN提交(fb1b9c7
)?所以Git可以以某种方式理解克隆之后master
的提交实际上与git-svn
相同吗?
我试图用--onto
进行重定位,正如here所解释的那样,但那不是我真正想要的(提交不在分支的顶端)。
Git + SVN ...有什么意义? – Hackerman
SVN对于这个项目是强制性的,但我的团队想要使用git(分布式,代码审查,分支等) – RSFalcon7