如何在git中清除特定遥控器的所有数据?

时间:2016-05-24 20:49:13

标签: git

我有一个git repo,我使用两个不同的遥控器:

$ git remote -v
origin  http://user@10.0.1.1/git/repo.git (fetch)
origin  http://user@10.0.1.1/git/repo.git (push)
origin-vpn  http://user@10.0.2.1/git/repo.git (fetch)
origin-vpn  http://user@10.0.2.1/git/repo.git (push)

这是相同的上游存储库,但我必须根据我的位置通过不同的端点访问它。

现在我不经常使用origin-vpn,因为我不能正常使用它,它有时会落后。但当我看到我的git log时,我看到所有分支和标签都来自两个来源。

我希望清除origin-vpn中的所有数据,就像我从未从中获取数据一样。我需要remote存在,因为我可能会不时使用它,但我不希望它出现refs

我该怎么做?如果没有相关命令,是否足够安全再次使用git remote deletegit remote add并删除所有这些引用?

编辑:这就是我看到我的git日志的方式:

alias gitlog='git log --color --graph --pretty=format:'\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit'

2 个答案:

答案 0 :(得分:3)

要从本地存储库中删除远程引用,您需要按照建议和git remote rm origin-vpn进行操作。这将只删除远程及其所有引用的本地副本以及配置(上游跟踪分支)。

此时,我会立即添加遥控器但不取回它。这将使vpn远程保持为可能的推/拉/提取位置(特别是通过名称),但不会使其任何引用堵塞您的本地仓库。

只要你没有将上游跟踪分支设置为vpn远程,标准的pull / fetch应该只下拉原始远程引用refs而不是vpn。

答案 1 :(得分:1)

作为另一种选择:既然你声明你只从origin-vpn拉出来,你可能根本不需要为它设置一个遥控器,以防你不知道。

从功能上讲,遥控器实际上并不仅仅是URL的别名,您只需从URL中提取,而无需为其设置遥控器:

git pull http://user@10.0.2.1/git/repo.git master

如果您实际上计划在每次使用时删除并重新创建origin-vpn遥控器,那么这似乎更简单。