我有一个最初使用 git-svn 创建的 git 存储库。现在我有一个推送到的 git 服务器,并且 svn 存储库已经丢失。我可以删除svn遥控器吗?如何?
4 回答
您可以编辑.git/config
文件并删除与要删除的遥控器关联的部分。
您要删除的行可能大致如下所示:
[svn-remote "svn"]
url = url-of-svn-repository/trunk
fetch = :refs/remotes/git-svn
这将从 Git 中删除远程,但您仍将拥有 Git 提交和 SVN 提交之间存储在.git/svn
. 如果您想摆脱所有 SVN 遥控器,您可以删除整个目录。如果您只想删除一个 SVN 远程并保留其他远程,则需要查看目录结构并仅删除与您要删除的远程关联的那些。
通过大多数 *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
埃里克的回答是正确的,但并不完整。即使在 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
如果你没有任何本地配置并且你想放弃在.git
目录中的工作,只需将 git repo 从 git 远程克隆到新目录并删除旧目录。
如果您确实有一些简单的本地配置(例如,与您的全局配置不同的用户/电子邮件),这样做可能更容易,然后在克隆后恢复任何本地配置。