如何使用哈希而不是分支名称来git rebase?

时间:2011-06-29 10:45:16

标签: git hash branch git-svn git-rebase

我使用git rebase --onto target source foo将分支foo从分支source移到分支target上。您知道是否可以使用哈希值而不是分支名称(如果没有给出),如下所示:git rebase --onto ab91c f4242 foo
作为一种解决方法,我暂时将分支名称添加到相关的提交对象中。但如果你有很多分支来重新定位,这可能是一个皮塔饼。

示例情况:

° bb42a
° ab91c
° 979c2
          /° fb648 foo
° f4242 --
° 333c9

git rebase --onto ...之后

° bb42a
          /° fb648 foo
° ab91c --
° 979c2
° f4242
° 333c9

背景:
如果您使用svn-server作为远程存储库,则解释的问题非常常见。每次提交对象都会被重写,因为每次git svn dcommit到svn-repository时都会添加 svn-id 。这将分离所有其他分支与其以前的

1 个答案:

答案 0 :(得分:4)

可以肯定的是:

  • git rebase(不是git-svn rebase)可以接受任何有效的提交作为参数,因此哈希值将起作用。
  • git-svn的{​​{3}}警告您:
  

避免git存储库和分支之间的所有git clone / pull / merge / push操作。
  在git分支和用户之间交换代码的推荐方法是git format-patchgit am,或者只是'dcommit'ing到SVN存储库。

因此,您需要确保不在SVN同步分支中引入提交,这些分支不会知道该提交,并会报告此类提交。
(你在SQ问题中有相反的情况“caveat section”)