我在以下场景中从共享git仓库中提取时遇到重复的代码冲突:
有一个常见的svn存储库
有几位开发人员使用git-svn bridge(通过git svn rebase / dcommit)跟踪/同步这个常见的svn repo和他们自己的本地git repos
这些使用git的开发人员有时需要在不影响svn存储库的情况下共享其更改。为此,他们设置了一个共享git仓库并使用pull / push命令交换他们的工作
事实证明,由于使用“git svn rebase”与主svn repo同步,这些开发人员可能会遇到冲突问题。发生这种情况是因为rebase操作会重写本地git分支的历史记录,并且无法进入共享git仓库并从中拉出它通常会导致冲突。
有人遇到同样的问题吗?
答案 0 :(得分:8)
为了简单起见而且 与能力较弱的人进行互操作 系统(SVN),建议 所有git-svn用户克隆,获取和 直接从SVN服务器转发, 并避免一切 git-clone / pull / merge / push操作 git存储库和分支之间。 推荐的交换方法 git分支和用户之间的代码是 git-format-patch和git-am,或者只是 'dcommit'ing到SVN存储库。
如果您的情况允许,您可以使用SVN存储库中的分支(即子目录)将您的工作与其他开发人员隔离开来。
答案 1 :(得分:3)
我发现将git-svn更改合并到各种git分支以及它们之间是非常好的。 git-svn问题开始的地方是将这些更改合并回svn(或者更确切地说,是你提交的git branch)。在我看来,如果您将更改手动合并到svn(例如git diff | patch
),则可以防止大部分问题。这将从你合并的东西中删除历史记录,但是颠覆用户已经习惯了这个并不是什么大事。