问题 如何让git-svn摆脱不再存在的远程分支?


是否有一种方便的方法来让我的本地git repo忘记已被删除的远程分支? git svn fetch 并不像我希望的那样“重新同步一切”。使用标准svn repo布局的导入设置了我的本地仓库(git svn -s …)。

有关: 为什么 git remote 在我的git-svn回购中没有列出任何内容?


8005
2017-12-08 05:19


起源

我的第一个想法就是删除代表那些分支的文件,这些分支只是一些文本文件 .git/refs/remotes。但是可能有一种比这更正确的方式,而且我相信如果你去逛一逛就有可能搞砸了。 .git 文件夹,但不知道你在做什么。 - MatrixFrog
你也想看看你的 .git/config 提交并删除那里提到的任何内容。 - MatrixFrog


答案:


您可以通过执行以下命令来删除孤立的远程分支:

git branch -d -r my_branch
rm -rf .git/svn/refs/remotes/my_branch

要一次删除所有孤立的分支而不是一次删除一个孤立的分支,请参阅答案 这里


15
2018-06-17 21:55



我也必须这样做 rm .git/refs/remotes/origin/my_branch 分支不显示。也, rm -rf .git/svn/refs/remotes/origin/my_branch/ 代替 rm -rf .git/svn/refs/remotes/my_branch/ (注意 origin)。知道为什么吗? - Miguel Prada
为了回答自己的不同,我可能会使用 --prefix 克隆时,这是从2.0开始的默认行为。 - Miguel Prada


在第一个想法,我会建议尝试 git remote prune。摘录自 文件

修剪

删除所有陈旧的远程跟踪   分支机构。这些陈旧的   分支已被删除   来自远程存储库引用   由,但仍在当地   可在“遥控器/”中找到。

使用--dry-run选项,报告内容   分支将被修剪,但不会   实际上修剪它们。

我认为这也适用于一个叫做的遥控器 svn...


0
2017-12-23 15:42



nope ... git-svn不以标准方式存储遥控器,也不以它的方便抽象存储......没有遥控器, git remote 没有输出。 - John Bachir