【问题标题】:Git-svn gets confused over a tag with the same name as a previously deleted oneGit-svn 对与以前删除的标签同名的标签感到困惑
【发布时间】:2025-12-31 21:50:01
【问题描述】:

这是场景:

  • 我将我的颠覆主干复制到标签“A”中。
  • 然后我从本地存储库中运行“git svn fetch”,该存储库找到了分支点并将其添加为远程分支“svn/tags/A”。
  • 后来我从 subversion 中删除了标签“A”,然后再次运行 'git svn fetch'。
  • 我执行了“git branch -rd svn/tags/A”来从本地存储库中删除悬空的远程分支。
  • 在后来的交汇处,我在我的 subversion 存储库中创建了一个名为“A”的新标签。 'git svn fetch' 找到了分支点,但问题出在:

我的本​​地 git 存储库认为 'svn/tags/A' 指向已删除分支中的旧提交。我在 '.git/svn/svn/tags' 中发现了一些对 'A' 的引用,也许他们在搞砸我。但是当我在运行 'git svn fetch' 之前启动另一个 git 存储库并删除这些文件时,我仍然会得到 'svn/tags/A' 指向错误的提交。

有什么方法可以清除远程 subversion 分支并将其重新读取到我的本地 git 存储库中?

编辑:我已经让它工作了,但我不太确定它的机制。
我将'.git/svn/svn/tags'中的引用移到分支'A',然后执行'git svn reset -r 1000',其中r1000是我分支点之前的提交。然后又做了一个 'git svn fetch',看起来它有效。
'svn/tags/A' 现在指向新的提交。

【问题讨论】:

    标签: svn git git-svn


    【解决方案1】:

    git svn reset 允许更改 rev_maprefs/remotes/git-svn,这将允许 git 重建其对新 SVN 标记的引用。
    注意:git svn update 不存在。
    git svn rebase 或更好:这里应该首先使用git svn fetch,如果你在git方面做了一些工作,那么documentation中提到的潜在git rebase --onto

    【讨论】: