我有一个最初使用git-svn创建的git存储库.现在我有一个git服务器,我推送到svn存储库已丢失.我可以删除svn遥控器吗?怎么样?
Eri*_*ric 74
您可以编辑该.git/config文件并删除与要删除的遥控器关联的部分.
您要删除的行可能看起来大致如下:
[svn-remote "svn"]
url = url-of-svn-repository/trunk
fetch = :refs/remotes/git-svn
Run Code Online (Sandbox Code Playgroud)
这将从Git中删除远程,但您仍将拥有Git提交与存储的SVN提交之间的关系.git/svn.如果你想摆脱所有的SVN遥控器,你可以删除整个目录.如果你想摆脱一个SVN遥控器并保留其他遥控器,你需要查看目录结构,只删除与你要删除的遥控器相关的目录结构.
Ant*_*los 21
通过大多数*nix shell,bash或mingw32来完成它:
cd ~/your_repo
git config --remove-section svn
Run Code Online (Sandbox Code Playgroud)
或者查看config(cat .git/config)时的任何部分.例如,下一行将删除Eric解决方案中描述的相同配置部分:
git config --remove-section svn-remote.svn
Run Code Online (Sandbox Code Playgroud)
接下来删除.git文件夹中的所有svn内容(svn,logs和refs).这也是谢尔盖建议的.
rm -rf .git/svn .git/{logs/,}refs/remotes/{git-,}svn/
Run Code Online (Sandbox Code Playgroud)
垃圾收集只是为了衡量:
git gc
Run Code Online (Sandbox Code Playgroud)
Ser*_*lov 20
埃里克的回答是正确的,但并不完整.甚至在拉斐尔·拉波索的评论之后.我希望我可以对答案发表评论而不是发布一个新答案,但规则是你不能评论,直到你达到50声望.
增加的是:
find .git -type f -exec grep -nH git-svn "{}" \;
Run Code Online (Sandbox Code Playgroud)
告诉我我在这两个文件中有引用:
./.git/info/refs:4:fd34a5c...8073f3 refs/remotes/git-svn
./.git/packed-refs:5:fd34a5...cd6c33 refs/remotes/git-svn
Run Code Online (Sandbox Code Playgroud)
在我删除这些引用之前,我可以看到git-svn在做什么git log
如果您没有任何本地配置,并且想放弃该.git目录中的内容,只需将git repo从git remote克隆到新目录,然后删除旧目录即可。
如果您确实有一些简单的本地配置(例如,将其他用户/电子邮件发送到全局配置),则这样做可能更容易,然后在克隆后还原任何本地配置。