git svn-如何在git中删除subversion远程?

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

jlconlin asked 2020-02-13T20:10:35Z
4个解决方案
74 votes

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

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

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

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

Eric answered 2020-02-13T20:10:58Z
20 votes

埃里克的答案是正确的,但并不完整。 即使在Rafael Raposo发表评论之后。 我希望我可以对答案发表评论,而不是发布一个新答案,但是规则是,您必须在获得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

Sergey Markelov answered 2020-02-13T20:11:32Z
20 votes

通过大多数* nix shell,bash或mingw32来执行此操作:

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

或查看配置时显示的任何部分(.git)。 例如,下一行将删除Eric解决方案中描述的相同配置部分:

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

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

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

垃圾收集只是一个很好的措施:

git gc

来源/积分

Anthony Hatzopoulos answered 2020-02-13T20:12:09Z
5 votes

如果您没有任何本地配置,并且希望放弃.git目录中的操作,则只需将git repo从git remote克隆到新目录,然后删除旧目录。

如果您确实有一些简单的本地配置(例如,将其他用户/电子邮件发送到全局配置),则这样做可能更容易,然后在克隆后还原任何本地配置。

jhabbott answered 2020-02-13T20:12:34Z
translate from https://stackoverflow.com:/questions/12013788/how-to-remove-subversion-remote-in-git