如何在git中删除subversion remote?

时间:2012-08-17 22:05:29

标签: git git-svn

我有一个最初使用git-svn创建的git存储库。现在我有一个git服务器,我推送到svn存储库已丢失。我可以删除svn遥控器吗?怎么样?

4 个答案:

答案 0 :(得分:74)

您可以编辑.git/config文件,并删除与您要删除的遥控器相关联的部分。

您要删除的行可能大致如下:

[svn-remote "svn"]
    url = url-of-svn-repository/trunk
    fetch = :refs/remotes/git-svn

这将从Git中删除远程,但您仍将拥有Git提交与.git/svn中存储的SVN提交之间的关系。如果你想摆脱所有的SVN遥控器,你可以删除整个目录。如果你想摆脱一个SVN遥控器并保留其他遥控器,你需要查看目录结构,只删除与你要移除的遥控器相关的目录结构。

答案 1 :(得分:20)

通过大多数* nix shell,bash或mingw32:

进行
cd ~/your_repo
git config --remove-section svn

或查看配置时的任何部分(cat .git/config)。例如,下一行将删除Eric's solution中描述的相同配置部分:

git config --remove-section svn-remote.svn

接下来删除.git文件夹(svn,logs和refs)中的所有svn内容。这也是谢尔盖建议的。

rm -rf .git/svn .git/{logs/,}refs/remotes/{git-,}svn/

垃圾收集只是为了好的措施:

git gc

source/credits

答案 2 :(得分:19)

Eric的回答是正确的,但并不完整。甚至在拉斐尔·拉波索的评论之后。我希望我可以对答案发表评论,而不是发布一个新答案,但规则是你不能评论,直到你达到50声誉。

增加的是:

find .git -type f -exec grep -nH git-svn "{}" \;

告诉我我在这两个文件中有引用:

./.git/info/refs:4:fd34a5c...8073f3 refs/remotes/git-svn
./.git/packed-refs:5:fd34a5...cd6c33 refs/remotes/git-svn

在删除这些引用之前,我可以看到 git-svn 正在执行git log

答案 3 :(得分:5)

如果您没有任何本地配置,并且想放弃在.git目录中进行操作,只需将git repo从git remote克隆到新目录并删除旧目录。 / p>

如果您确实有一些简单的本地配置(例如,不同的用户/电子邮件到您的全局配置),它可能更容易做到这一点,然后在克隆后恢复任何本地配置。