Git将上游从本地仓库中移除

138

我正在使用 Ruby on Rails 应用程序,并尝试同步分支。需要注意的是,我也在使用 Mac。我执行了以下操作:

$ git remote -v

为了查看我的本地仓库,我在尝试进入upstream时出了一些问题:

$ git remote add upstream https://github.com/foo/repo.git

当我应该使用大写字母来表示 Foo 时:

$ git remote add upstream https://github.com/Foo/repos.git

问题是如何删除upstream,因为每次我尝试更改它时,都会出现fatal错误?


1
这不是删除上游的操作,而是删除一个远程仓库,只是碰巧你给它起了个名字叫做"upstream"。 - Constantine Ketskalo
4个回答

212

使用 Git 版本 1.7.9.5 没有“remove”命令用于远程。请改用“rm”。

$ git remote rm upstream
$ git remote add upstream https://github.com/Foo/repos.git

如前面的回答中所指出的那样,set-url可以起作用。

我不知道命令何时更改,但Ubuntu 12.04随附的是1.7.9.5版本。

编辑:有一些人似乎遇到了没有“upstream”远程的情况。执行cat .git/config并查看远程名称(如果在Windows上且未使用PowerShell,则可以使用type .git/config)。输出将显示为您的git存储库配置的远程,例如:

[remote "origin"]

将您想要删除的远程名称替换为:

$ git remote rm origin

如果你没有“upstream”远程分支,你就无法删除它。


1
在Windows上,它会返回错误“usage: git remote remove <name>”,但不会删除上游分支。 - Guy
1
当你执行 git remote rm upstream 后,它会返回什么?谢谢 - 我不经常在 Windows 上进行开发。 - bmacnaughton
致命错误:没有这样的远程仓库:'upstream'。 - user1709076
'git remote rm master' 给我返回了 "fatal: No such remote: 'master'"。 - user1709076

43

git远程操作页面非常简单:

使用

Older (backwards-compatible) syntax:
$ git remote rm upstream
Newer syntax for newer git versions: (* see below)
$ git remote remove upstream

Then do:    
$ git remote add upstream https://github.com/Foo/repos.git

或者直接更新 URL:

$ git remote set-url upstream https://github.com/Foo/repos.git

或者如果您感觉舒适,可以直接更新.git/config文件——您可能已经想出需要更改什么(留给读者自己练习)。

...
[remote "upstream"]
    fetch = +refs/heads/*:refs/remotes/upstream/*
    url = https://github.com/foo/repos.git
...

关于 'git remote rm' 与 'git remote remove' 的区别 - 这在 git 1.7.10.3 / 1.7.12 2 版本上有所变化 - 详见此处链接

Log message

remote: prefer subcommand name 'remove' to 'rm'

All remote subcommands are spelled out words except 'rm'. 'rm', being a
popular UNIX command name, may mislead users that there are also 'ls' or
'mv'. Use 'remove' to fit with the rest of subcommands.

'rm' is still supported and used in the test suite. It's just not
widely advertised.

2
这个答案似乎需要更新。在 git 1.7.9 中,git remote remove upstream 会产生“error: Unknown subcommand: remove”的错误。 - Michael Scheper
try 'git remote rm upstream` - bmacnaughton

31

在 Git 版本 2.14.3 中,

您可以使用以下命令删除上游分支:

git branch --unset-upstream

上述命令还将删除跟踪流分支,因此如果您想从存储库重新设置基础,则必须使用以下命令

git checkout git merge
git rebase origin master 

使用git fetchgit rebase代替git pull --rebase


2
这对我的分支及其2个不同的上游完美地起作用了。 - Jason
这个答案似乎是2022年的好答案。 - moudug

31
$ git remote remove <name>

即。

$ git remote remove upstream

那应该就可以了


在我看来,截至2023年,这是最简单和最直接的方式。 - Prithvi Boinpally

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接