3

git-svn用来连接到颠覆服务器。似乎可以更改(旧提交的)颠覆提交消息。在此处此处查看已接受的答案。但是git svn rebase没有注意到这样的变化。

我怎么能告诉git svn“修复”其历史上的这种变化?


起初我没有注意到我的历史记录被仍然包含旧的提交消息破坏了,直到我添加了一个遥控器。此远程是git-svn同一服务器的另一个结帐。当 svn 中的提交消息更改之前的两个签出更新之一(使用git svn rebase)和更改之后的其他更新时,git-svn分支将指向我的存储库和远程存储库中的不同 SHA-1 哈希。那是git-svn分支指针之一是错误的,需要重新同步/修复:

            / C  - D  - E  - F
.... - A - B
            \ C' - D' - E' - F'
              ^
         commit-message
         later changed
4

2 回答 2

3

用于git svn reset -r <n>重置(<n>Subversion 修订版在哪里;请参阅doc):

重置

将 fetch 的效果撤消到指定的修订版。这允许您重新获取 SVN 修订版。[...] 使用 fetch 进行重置,然后使用 git reset 或 git rebase 将本地分支移动到新树上。

例子

$ git svn find-rev B
3
$ git svn reset -r3
r3 = 6f29012a3e25e00c899976b584084d6968aba43d (refs/remotes/git-svn)
$ git svn fetch
...
于 2017-08-11T16:12:07.793 回答
-1

如果您在 Subversion 版本之上没有任何本地提交,您可以进行重置,然后重新运行 svn rebase:

git reset --hard B
git svn rebase

如果您确实有本地提交,我会尝试交互式 rebase,然后重新运行 svn rebase:

git rebase -i B
<A text editor will popup and you can remove the individual svn revisions there>
git svn rebase

如果更改是很久以前在 svn 的历史上发生的,我可能会尝试在 git 中将一条消息编辑为相同的,看看 git-svn 是否会接受。

于 2013-07-13T22:29:29.810 回答