我有一个最初使用git-svn创建的git存储库。现在我有一个git服务器,我推送到svn存储库已丢失。我可以删除svn遥控器吗?怎么样?
答案 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
答案 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>
如果您确实有一些简单的本地配置(例如,不同的用户/电子邮件到您的全局配置),它可能更容易做到这一点,然后在克隆后恢复任何本地配置。