git:在合并时使用git svn

git:在合并时使用git svn,git,svn,Git,Svn,据我所知,git svn不支持推动合并提交 有没有办法让它与这样的承诺一起工作 我们尝试使用rebase创建线性历史。但是,这会因空格错误冲突而失败。有没有一种方法可以将历史记录线性化,从而避免冲突?将合并的提交重新设置为svn的最简单方法是挤压它们: 假设我们将分支dev重设为trunk git checkout trunk git merge --squash dev 您可能必须修复trunk和dev之间的实际合并冲突。最后,您有一个提交,您可以很好地git svn dcommit 这种方

据我所知,git svn不支持推动合并提交

有没有办法让它与这样的承诺一起工作


我们尝试使用rebase创建线性历史。但是,这会因空格错误冲突而失败。有没有一种方法可以将历史记录线性化,从而避免冲突?

将合并的提交重新设置为svn的最简单方法是挤压它们:

假设我们将分支
dev
重设为
trunk

git checkout trunk
git merge --squash dev
您可能必须修复
trunk
dev
之间的实际合并冲突。最后,您有一个提交,您可以很好地
git svn dcommit


这种方法的缺点是,在SVN中,您的提交粒度松散。如果这是一个问题,那么您可以为git使用一种rebase风格的合并策略(例如)

重定合并提交到svn的最简单方法是挤压它们:

假设我们将分支
dev
重设为
trunk

git checkout trunk
git merge --squash dev
您可能必须修复
trunk
dev
之间的实际合并冲突。最后,您有一个提交,您可以很好地
git svn dcommit


这种方法的缺点是,在SVN中,您的提交粒度松散。如果这是一个问题,那么您可以为git使用一种rebase风格的合并策略(例如)

这不是直截了当的,而是可能的

  • 查看您的功能分支

    $ git checkout feature1
    
  • 创建一个Subversion分支,最好使用相同的名称,并重新设置本地git分支的基础

    $ git svn branch feature1
    $ git rebase remotes/feature1
    
  • 当您推送更改时,它们将转到Subversion分支,而不是主干

    $ git svn dcommit
    

  • 据我所知,执行e merge的唯一方法是使用临时SVN签出并使用
    SVN merge
    。对于可以自动执行且没有冲突的合并,编写最后步骤(SVN存储库查找、临时签出、合并)的脚本对我来说非常有效。

    这并不简单,但可能

  • 查看您的功能分支

    $ git checkout feature1
    
  • 创建一个Subversion分支,最好使用相同的名称,并重新设置本地git分支的基础

    $ git svn branch feature1
    $ git rebase remotes/feature1
    
  • 当您推送更改时,它们将转到Subversion分支,而不是主干

    $ git svn dcommit
    
  • 据我所知,执行e merge的唯一方法是使用临时SVN签出并使用
    SVN merge
    。对于可以自动执行且没有冲突的合并,编写最后步骤的脚本(SVN存储库查找、临时签出、合并)对我来说效果很好