【问题标题】:Using GIT with both a GIT remote and an SVN remote将 GIT 与 GIT 遥控器和 SVN 遥控器一起使用
【发布时间】:2014-10-28 03:40:57
【问题描述】:

我的团队目前使用 svn。我希望在我的项目中使用 git,并且有几个需要一起工作的遥控器。我正在使用一个裸 git 存储库来协调各种 git 遥控器。我偶尔需要将我的更改推送到整个团队的 svn 存储库。我目前有一个现有的 svn 遥控器和一个现有的 git 遥控器。我使用这种方法将 svn 添加到我的纯 git 克隆(来自 git 远程):

http://www.draconianoverlord.com/2010/03/05/existing-git-into-svn.html

现在,我将所有内容都提交给了 svn,但是当我尝试从 git 原点变基时,它想要合并我所有的更改,并且所有内容都发生冲突。似乎每次我想与一个或另一个交互时,它都需要合并并且有冲突。有没有办法避免这种情况?我解开了整个历史合并,并且起源/发展在我的历史中看不到任何地方......(我正在努力推动)

更新:

似乎我的历史被这个过程搞砸了,基本上创建了两个独立的历史时间线。来自 svn 端的所有更改都与 git 端冲突。那么,svn 远程和 git 远程不兼容吗?因为,如果我使用 svn,我必须将其设为我的权威遥控器,仅此而已?

【问题讨论】:

    标签: git version-control git-svn git-remote


    【解决方案1】:

    那么,svn 远程和 git 远程不兼容吗?因为,如果我使用 svn,我必须让它成为我的权威遥控器,就这样?

    简而言之,是的。正如manpage 解释的那样:

    CAVEATS
    
           For the sake of simplicity and interoperating with Subversion, it is
           recommended that all git svn users clone, fetch and dcommit directly
           from the SVN server, and avoid all git clone/pull/merge/push operations
           between Git repositories and branches. The recommended method of
           exchanging code between Git branches and users is git format-patch and
           git am, or just 'dcommit’ing to the SVN repository.
    
           Running git merge or git pull is NOT recommended on a branch you plan
           to dcommit from because Subversion users cannot see any merges you’ve
           made.
    

    所以是的,为了在使用 git svn 时保持简单,SVN 存储库应该是您的only 上游存储库。

    有一些方法可以解决这个问题,但它们很复杂,需要对 git 和 git-svn 的内部有很好的了解,所以通常你应该坚持上面的建议。

    【讨论】:

    • 这很糟糕,但它是有道理的。提交的唯一 ID 不相关,因此它将它们视为两个不同的历史记录。
    • 我认为存储库使用 git-svn 进行克隆,而所有其他 git 存储库都使用它作为其来源,它应该可以工作。这个存储库将是薄弱环节,因为它需要维护,如果丢失,则需要 git-svn reclone 和所有其他 git 存储库的 reclone。
    • @user197766:git-svn 存储库仍会定期重新设置基础(git svn rebase)——这会混淆其他使用它作为来源的 git 存储库。是的,有办法应对,但并不简单。
    • 我想你已经回答了我的问题,但我正在努力确保我理解原因。是否因为 rebase 正在改变历史,不应该使用共享分支来完成?
    • @user197766:没错。这被称为“上游变基”,通常被认为是一个坏主意。有一些方法可以使用上游变基(“git rebase”的手册页有一个关于此的部分),但 git 不(并且在某种程度上不能)很好地支持上游变基。
    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2014-08-11
    • 2016-11-08
    • 1970-01-01
    相关资源
    最近更新 更多