我有一个svn分支,我一直在努力,并决定开始使用git-svn在本地工作。现在我有两个问题。我想将我的工作转移到另一个svn存储库(在同一主机上),但我首先想要合并来自trunk的最新工作。我怎么用git-svn做这个?另外,我如何继续在一个单独的svn-repo中继续工作,同时不断地将原始仓库中的工作合并?此外,我不想从原始主干检查整个历史记录,因为该项目相当庞大。我是git和git-svn的新手,虽然我参加了git分支的速成课程,但我有足够的信心使用像rebase和cherry-pick这样的高级命令。我主要需要知道如何通过git-svn应用这些概念。 svn repos是否以某种方式设置为git遥控器?网上有很好的资源解释它是如何工作的吗?非常感谢任何指导。
答案 0 :(得分:0)
git svn init -s <url>
创建您的Git仓库。git config --edit
,为每个Subversion存储库添加多个svn-remotes
。稍后您将对所有git-svn命令使用-R
选项来选择要使用的svn-remote
。根据需要调整svn-remote
分支映射。请记住,默认的refs/remotes/*
命名空间指定远程分支 - 而不是Git遥控器。 (你只有一个名为git remote
的{{1}},我建议不要推/拉。 子>
您可以轻松设计远程分支命名空间,以保持不同Subversion存储库的分支(例如.
,refs/remotes/repoA/*
等)。
/refs/remotes/repoB/*
。这具有仅部分扫描历史的选项,例如,从特定修订开始。请阅读manpage有关如何执行此操作的说明。
您也可以在此处忽略特定路径和/或分支。
像往常一样使用Git,尝试尽可能保持您的提交线性。重新经常。合并提交很好(git svn fetch
甚至会设置git-svn
属性),但是圣牛要小心(并阅读有关警告的联机帮助页)。了解Git提交的svn:mergeinfo
代码是不可变的,而git-svn-id
则无法保存。例如,禁止修改或修改已经push -f
的更改。
网上是否有很好的资源解释它是如何运作的?
到目前为止,最好的资源是manpage。接下来的是git-svn
source。