如何在git中删除subversion远程?

问题描述 投票:0回答:5

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

git git-svn
5个回答
83
投票

您可以编辑

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

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

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

这将从 Git 中删除远程,但您仍然可以在

.git/svn
中存储 Git 提交和 SVN 提交之间的关系。如果您想删除所有 SVN 遥控器,您可以删除整个目录。如果您只想删除一个 SVN 遥控器并保留其他遥控器,则需要查看目录结构并仅删除与要删除的遥控器关联的目录。


30
投票

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

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

或查看配置时看到的任何部分(

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

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

接下来删除

.git
文件夹中的所有 svn 内容(svn、日志和参考)。这也是谢尔盖的建议。

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

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

git gc

来源/学分


22
投票

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


5
投票

如果您没有任何本地配置,并且想要放弃在

.git
目录中进行操作,只需将 git 存储库从 git 远程克隆到新目录并删除旧目录即可。

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


0
投票

就我而言,配置部分

[svn-remote "svn"]
位于此路径上的文件中:
.git\svn\.metadata
。除了
.metadata
文件之外,
refs\remotes\origin\git-svn,trunk,trunk@228
上还有一个文件夹结构。 删除
svn
以及其中的所有内容,解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.