我正在尝试将我们现有的 svn 存储库移动到 git。我们不需要在两者之间进行任何同步(因此不需要 git svn fetch
es 或 dcommit
s)——我们只是移动而已。
我发出了这个命令来创建 git 存储库:
git svn clone -s https://server/repos/my_repo
一切顺利。但是,当我 cd
进入新的 my_repo
目录时,那里的文件是分支之一的一部分(不是主干)。
执行 git branches -a
会产生:
* master
modelExperimentalTrunk
modelExperimentalTrunk@719
dRefactoring
reorganise
stableV396
tags/v1.0
trunk
我在 master 分支上,但沙箱中的文件实际上来自 dRefactoring
分支(我们比较隐蔽的分支之一)。
问题:
- 为什么
master
分支没有连接到trunk
? - 有没有办法将它重新连接到
trunk
?还是可以在git svn clone
阶段完成? - 此外,鉴于这将在服务器上进行,
git svn
是否可以创建 --bare 存储库?
最佳答案
将 master 分支重新连接到 trunk 很容易,只需运行:
git checkout master
git reset --hard trunk
这会切换到 master 分支(如果还不是这种情况)并将它和工作树重置为 trunk 分支的状态。在此之后,您可以安全地删除主干分支。
git-svn 不支持开箱即用的裸仓库。阅读http://gsocblog.jsharpe.net/archives/12更多细节。但我认为您不需要这个复杂的解决方案,因为您只想对 SVN 存储库进行一次导入。
因此,您只需创建一个现有 git 存储库的裸克隆即可。
关于svn - 为什么 git-svn clone 将 'master' 设置为随机分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227528/