我使用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 。这将分离所有其他分支与其以前的主。
答案 0 :(得分:4)
可以肯定的是:
git rebase
(不是git-svn rebase
)可以接受任何有效的提交作为参数,因此哈希值将起作用。git-svn
的{{3}}警告您:避免git存储库和分支之间的所有
git clone
/pull
/merge
/push
操作。
在git分支和用户之间交换代码的推荐方法是git format-patch
和git am
,或者只是'dcommit'ing到SVN存储库。
因此,您需要确保不在SVN同步分支中引入提交,这些分支不会知道该提交,并会报告此类提交。
(你在SQ问题中有相反的情况“caveat section”)