0

我正在将大型存储库从 SVN 转换为 Git。我使用 SVN2Git 来处理转换。但是,这需要很长时间。因此,在我们测试、准备 CI 和构建基础架构等时,我一直在使用该svn2git --rebase命令进行更改。

但是,我不确定我应该如何处理对分支或添加的分支的更改。例如,今天有人创建了一个分支,我需要将其引入。我运行了我的svn2git --rebase(针对 [master]),它按预期更新了 master,但新分支没有转换过来。

这让我怀疑它是否正在更新现有的分支。那么,svn2git 在 期间做了什么--rebase,确切地说,但更重要的是,我如何确保我的分支正在更新并且任何新的分支也正在转换?

我什至会决定如何从 svn 手动转换或更新 git 分支,因为数量不多,但它们很重要。

4

2 回答 2

0

在我的情况下,我最终svn2git使用与最初使用的参数相同的参数进行调用,只是我过去常常-revision跳到我感兴趣的分支的提交。

我不确定这是否是正确的方法,但它对我有用。

于 2014-02-21T13:30:30.517 回答
0

我发现使用 svn2git,即使在使用 --rebase 时,分支并不总是保持最新。因此,如果您运行:

svn2git --rebase

...并且您的本地分支仍然没有更新,那么您可能需要在 svn2git 运行后手动更新您的本地参考。(不要在当前分支上执行此操作,因为它会失败。请先关闭 master。)

git branch -f master remotes/svn/trunk

这会强制您的本地 Git 主分支与远程 SVN 主干分支处于同一提交状态。

如果你有很多分支要这样做,那么下面的循环应该能够为你纠正这个问题(确保你当前的分支不在这个列表中——不妨切换到 master):

for i in `git branch -a \
| grep remotes/svn | grep -v trunk \
| sed -e 's/^  remotes.svn.//'`; do
    git branch -f $i remotes/svn/$i
done

请注意,这样做会覆盖您在该分支上对 Git 所做的任何提交。我建议仅在您尚未开始使用 Git 存储库的情况下这样做。

于 2015-11-19T21:58:41.950 回答