我有一个git仓库,最初是使用git-svn创建的。现在我有一个git服务器可以推送到,但svn仓库已经丢失了。我能删除svn远程吗?如何操作?
可以通过以下命令删除svn远程:``` git remote rm svn ```
.git/config
文件并删除与你想要移除的远程关联的部分。[svn-remote "svn"]
url = url-of-svn-repository/trunk
fetch = :refs/remotes/git-svn
这将从Git中移除远程,但您仍将拥有Git提交和SVN提交之间的关系,存储在.git/svn中。如果要摆脱所有SVN远程,请删除整个目录。如果要摆脱一个SVN远程并保留其他远程,则需要查看目录结构并仅删除与要删除的远程相关联的那些内容。使用大多数*nix shells,如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内容(包括svn、日志和引用),这也是Sergey所建议的。
rm -rf .git/svn .git/{logs/,}refs/remotes/{git-,}svn/
附加的垃圾回收:
git gc
rm
命令中删除尾部斜杠,这是不必要的。 - rindeal埃里克的回答是正确的,但不全面。即使在拉斐尔·拉波索(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/info/refs
和.git/packed-refs
文件的垫脚石。 - chronospoon如果您没有任何本地配置,且不想在 .git
目录中瞎搞,那么只需将 Git 存储库从远程 Git 克隆到一个新目录,然后删除旧目录即可。
如果您有一些简单的本地配置(例如与全局配置不同的用户/电子邮件),那么这种方法可能仍然更容易,然后在克隆操作后恢复任何本地配置。
.git/svn
目录。 - jlconlin.git/refs/remote/git-svn
中的引用。它指向从git-svn提交的最后一次提交。 - Rafael Raposo