51

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

4

4 回答 4

76

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

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

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

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

于 2012-08-17T22:08:14.580 回答
25

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

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

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

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

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

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

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

git gc

来源/学分

于 2014-11-26T23:33:51.183 回答
21

埃里克的回答是正确的,但并不完整。即使在 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

于 2013-05-13T05:51:54.790 回答
5

如果你没有任何本地配置并且你想放弃在.git目录中的工作,只需将 git repo 从 git 远程克隆到新目录并删除旧目录。

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

于 2016-10-03T11:20:38.253 回答