如何使用散列而不是分支名称重新设置git基址?
我使用如何使用散列而不是分支名称重新设置git基址?,git,hash,branch,git-svn,git-rebase,Git,Hash,Branch,Git Svn,Git Rebase,我使用git-rebase--on-target-source-foo将分支foo从分支source移动到分支target。您知道是否可以使用散列值而不是像这样的分支名称(如果没有给出):git-rebase-on-ab91c-f4242-foo? 作为一种解决方法,我临时将分支名称添加到相关的提交对象中。但如果有许多分支需要重定基础,则这可能是一个pita 示例情况: ° bb42a ° ab91c ° 979c2 /° fb648 foo ° f4242 -- ° 333
git-rebase--on-target-source-foo
将分支foo
从分支source
移动到分支target
。您知道是否可以使用散列值而不是像这样的分支名称(如果没有给出):git-rebase-on-ab91c-f4242-foo
?作为一种解决方法,我临时将分支名称添加到相关的提交对象中。但如果有许多分支需要重定基础,则这可能是一个pita 示例情况:
° bb42a
° ab91c
° 979c2
/° fb648 foo
° f4242 --
° 333c9
在git-rebase之后--on…
° bb42a
/° fb648 foo
° ab91c --
° 979c2
° f4242
° 333c9
背景:如果您使用svn服务器作为远程存储库,则说明的问题非常常见。您提交的所有对象都会被重写,因为每次您将git svn dcommit添加到svn存储库时,svn id都会被添加到svn存储库中。这会将所有其他分支与其以前的主分支分离。确定的是:
(不是git-rebase
)可以接受任何有效的提交作为参数,因此散列值可以工作git-svn-rebase
- git svn的警告您:
git克隆/pull
/merge
/push
操作。
建议在git分支机构和用户之间交换代码的方法是git格式补丁
和git am
,或者只是“向SVN存储库提交数据”
因此,您需要确保不会在SVN同步分支中引入提交,因为SVN同步分支不知道该提交,并且会这样报告。
(SQ问题“”中的情况正好相反)尝试使用哈希值时,您收到了什么错误消息?git rebase手册页确实提到“可能是任何有效的提交,而不仅仅是现有的分支名称。”我只在svn场景中尝试过这一点。我只是在本地git存储库中尝试了一下。它起作用了。明天我会和svn一起试试。有一条类似“找不到索引对象”的错误消息,但我必须重新生成它以准确地说明消息。好的,我明天再检查;)请注意,git svn rebase
与git rebase
大不相同。我昨天可能做错了什么。使用散列值的Git重基是有效的。谢谢你。@JJD:太好了。在弹出任何错误消息时,将命令和错误消息复制到一些临时文件文本中总是很有用的。它可以在像这样的问题上派上用场;)