10

在以下情况下,从共享 git 存储库中提取时,我面临着重复的代码冲突:

  1. 有一个通用的svn仓库

  2. 有几个开发人员使用 git-svn 桥(通过 git svn rebase/dcommit)跟踪/同步这个常见的 svn 存储库与他们自己的本地 git 存储库

  3. 这些使用 git 的开发人员有时需要在不影响 svn 存储库的情况下共享他们的更改。为此,他们设置了一个共享的 git 存储库并使用拉/推命令交换他们的工作

  4. 事实证明,由于使用“git svn rebase”与主 svn 存储库同步,这些开发人员可能会面临冲突问题。发生这种情况是因为 rebase 操作会重写本地 git 分支的历史记录,并且无法推送到共享的 git 存储库中,并且从中拉出通常会导致冲突。

有人有同样的问题吗?

4

2 回答 2

8

git-svn(1)说:

为简单起见和与能力较差的系统(SVN)互操作,建议所有 git-svn 用户直接从 SVN 服务器克隆、获取和 dcommit,并避免所有 git-clone/pull/merge/push 操作在 git 存储库和分支之间。在 git 分支和用户之间交换代码的推荐方法是 git-format-patch 和 git-am,或者只是“dcommit”到 SVN 存储库。

如果您的情况允许,您可以使用 SVN 存储库中的分支(即子目录)将您的工作与其他开发人员隔离开来。

于 2009-02-21T19:16:46.680 回答
3

我发现将 git-svn 更改合并到各种 git 分支以及它们之间是完全可以的。git-svn 问题开始的地方是将这些更改合并回 svn(或者更确切地说,是您 dcommit 的 git 分支)。git diff | patch在我看来,如果您手动将更改合并回 svn(例如 by ),大多数这些问题都可以避免。这将从您合并的东西中删除历史记录,但是颠覆用户已经习惯了,这没什么大不了的。

于 2009-06-13T17:01:53.670 回答