我的团队和我正在努力让我们的svn存储库与git存储库同步。我们正在开发一个项目,并被要求在svn存储库(由assembla.com网站托管)上共享我们的代码。由于我们习惯使用git对我们的代码进行版本控制,我们决定充分利用git提供的git svn功能。为了共享我们的所有工作并将其保留在正确的分支中,我们也为git拥有一个远程仓库(bitbucket)。
到目前为止,我们用git提交的所有工作都没有给我们带来问题,但是当涉及到同步svn存储库时,一堆错误接踵而至。
我按照这个回答Pushing an existing git repository to SVN来连接svn存储库和git存储库,但是经过几次合并和提交之后,我遇到了错误,无法再次提交更改了。
现在我有一个分支,它是svn / trunk的副本。
但是,当
到目前为止,我们用git提交的所有工作都没有给我们带来问题,但是当涉及到同步svn存储库时,一堆错误接踵而至。
我按照这个回答Pushing an existing git repository to SVN来连接svn存储库和git存储库,但是经过几次合并和提交之后,我遇到了错误,无法再次提交更改了。
现在我有一个分支,它是svn / trunk的副本。
$ git checkout -b assembla_copy -t svn/trunk
Branch assembla_copy set up to track local ref refs/remotes/svn/trunk.
Switched to a new branch 'assembla_copy'
$ git svn rebase svn/trunk
Current branch assembla_copy is up to date.
为了将其与我的主分支同步,我尝试了以下两种方法:
git merge master
并且
git rebase master
但是,当
git rebase master
开始应用自第一个提交以来的所有更改并产生大量冲突时(当我已经在svn/trunk中拥有这些更改时,由于某种方式我设法将一些更改推送到在线仓库;我们现在处于r46),git merge master
很好,但当我进行dcommit时,所有更改都被汇总到一个提交中,其中说明“将分支'master'合并到assembla_copy”,而我希望它能提交所有单独的提交(就像一开始做的那样..)。
如果我从主分支进行dcommit,所有提交都是分开的,但然后重新定位了主分支,因此所有具有主提交作为父级的分支显示为与主分支分开的形式..
您能否向我解释正确的工作流程,以便svn存储库镜像git存储库,其中所有工作都完成了(svn只是副本)? 您能否仅使用标准git命令而不是复杂的bash脚本,因为我在过去一周搜索解决方案时看到了一些答案?
谢谢!