Git svn rebase 导致冲突
Git svn rebase results in conflicts
我 运行 在一个相当大的回购(~8000 次提交)上 git filter-branch
删除某些二进制文件,但现在当我 git svn rebase
使我的回购保持最新时,它会导致大量冲突。我猜这是因为这两个命令都涉及重写历史。
有什么方法可以在我的 filter-b运行ch 之后从 SVN 同步到 Git 而没有这些冲突?任何未来的变基也会导致这样的问题吗? (我只是以一种方式从 SVN 同步到 Git)
已发送到 SVN(通过 git svn dcommit)的提交不应进一步更改,因为它会导致如您所见的冲突。
在 git-only 场景中,理论上您可以执行 git push --force (尽管如果您通过该 repo 与其他人合作,则不鼓励这样做),但 SVN 不允许这样做.
因此,您不能重写已经发送到颠覆服务器的内容。如果二进制文件在颠覆服务器上,filter-branch 无论如何也帮不了你。此外,如果您在服务器本身上使用 SVN 工具删除二进制文件,则需要重新检出 git 副本 - git-svn 数据此时将无效。
您现在唯一能做的就是将您的主分支重置为 origin/trunk。
编辑:
至于新出现的冲突,我的猜测是 filter-branch 弄乱了 $GIT_DIR/svn/**/.rev_map 中 git 提交和 svn 修订号之间的关系。 *(参见 git-scm.com/docs/git-svn: CAVEATS/FILES)。
此外,如果您在 git 副本中删除的文件从 SVN 端发生更改,自然会发生冲突。
据我所知,您无法做任何事情来使 filter-branch
和 svn rebase
兼容。您正在重写与远程相关的历史记录。因此,您更改了提交哈希并使 SVN rev_map 的映射完全无用。
如果您在 filter-branch
之后移除遥控器,情况就不同了,在这种情况下,这根本无关紧要,但就目前情况而言,我认为 没办法 使这项工作。
我 运行 在一个相当大的回购(~8000 次提交)上 git filter-branch
删除某些二进制文件,但现在当我 git svn rebase
使我的回购保持最新时,它会导致大量冲突。我猜这是因为这两个命令都涉及重写历史。
有什么方法可以在我的 filter-b运行ch 之后从 SVN 同步到 Git 而没有这些冲突?任何未来的变基也会导致这样的问题吗? (我只是以一种方式从 SVN 同步到 Git)
已发送到 SVN(通过 git svn dcommit)的提交不应进一步更改,因为它会导致如您所见的冲突。
在 git-only 场景中,理论上您可以执行 git push --force (尽管如果您通过该 repo 与其他人合作,则不鼓励这样做),但 SVN 不允许这样做.
因此,您不能重写已经发送到颠覆服务器的内容。如果二进制文件在颠覆服务器上,filter-branch 无论如何也帮不了你。此外,如果您在服务器本身上使用 SVN 工具删除二进制文件,则需要重新检出 git 副本 - git-svn 数据此时将无效。
您现在唯一能做的就是将您的主分支重置为 origin/trunk。
编辑: 至于新出现的冲突,我的猜测是 filter-branch 弄乱了 $GIT_DIR/svn/**/.rev_map 中 git 提交和 svn 修订号之间的关系。 *(参见 git-scm.com/docs/git-svn: CAVEATS/FILES)。 此外,如果您在 git 副本中删除的文件从 SVN 端发生更改,自然会发生冲突。
据我所知,您无法做任何事情来使 filter-branch
和 svn rebase
兼容。您正在重写与远程相关的历史记录。因此,您更改了提交哈希并使 SVN rev_map 的映射完全无用。
如果您在 filter-branch
之后移除遥控器,情况就不同了,在这种情况下,这根本无关紧要,但就目前情况而言,我认为 没办法 使这项工作。