更改Git遥控器’推送到’默认值

Changing the Git remote 'push to' default

我想更改git默认的远程分支目的地,这样我就可以

1
git push

而不是:

1
git push upstream

目前这被设置为源站远程,我想将它设置为另一个远程。

我试图删除原始的(从远程克隆的)

1
git remote rm origin

它确实移除了原来的遥控器。但不能解决git push问题。我仍然得到:

fatal: No configured push destination. Either specify the URL from the
command-line or configure a remote repository using...

我还试着玩:

1
git remote set-url --push myfork origin

还有其他选项,但似乎都不起作用(可能是因为我太快删除了源站遥控器?)

按照这里的答案,我试图改变:

1
git config push.default upstream (or matching)

但两者都不起作用。


您可以使用git push -u 来设置默认的上游。有关详细信息,请参阅git push的文档。


要更改将哪个上游远程设备"连接"到您的分支,请使用带有上游配置标志的git branch命令。

首先确保远程存在:

埃多克斯1〔2〕

为当前(已签出)分支设置首选远程:

埃多克斯1〔3〕

验证是否使用正确的上游远程设置了分支:

江户十一〔四〕号


使用此命令,您可以轻松地同时更改分支的默认远程设置

1
git push -u <remote_name> --all


使用Git 2.3.2…

1
git branch --set-upstream-to myfork/master

现在,statuspushpull指向myfork远程


只是一个说明(使用Ubuntu 12.04上的Git版本1.7.9.5):

Git将添加/删除遥控器。这些是连接了服务器的git的远程实例。

1
git remote add myremote git://remoteurl

然后,您可以这样获取所述Git存储库:

1
git fetch myremote

这似乎创建了一个名为"myremote"的分支,但是该分支的远程不是自动设置的。要执行此操作,必须执行以下操作:

首先,确认您有这个问题,即

1
git config -l | grep myremote

您应该看到如下内容:

1
2
3
4
remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master

如果您看到branch.myremote.remote=.,则应继续:

1
2
3
git config branch.myremote.remote myremote
git checkout myremote
git pull

现在您应该了解远程存储库的最新信息,并且您的拉/推应该绑定到适当的远程。每个分支都可以用这种方式切换遥控器。[注][1]

根据正式的git-config文档,您可以设置一个默认的push分支(只在该页面上搜索remote.push default),但是请记住,这不会影响已经存在的存储库/分支,因此这只适用于新的存储库/分支。您应该记住,--global将设置用户特定的存储库默认值(~/.gitconfig),--system将设置系统范围的存储库默认值(/etc/gitconfig),并且没有标志将设置当前存储库的配置选项(../.gitconfig)。

还应该注意,push.default配置选项用于配置参考规范行为,而不是远程行为。

【1】:git branch --set-upstream myotherremote通常在这里工作,但是Git会抱怨如果使用git branch --set-upstream myremote的话,它不会设置一个分支作为自己的远程。但我相信这是不正确的行为。


如果您执行了git push origin -u localBranchName:remoteBranchName命令,并按顺序执行了git push命令,则会得到错误,即原点不存在,然后执行以下步骤:

  • 江户十一〔16〕号
  • 检查是否有我不在乎的遥控器。用git remote remove 'name'删除

  • 埃多克斯1〔18〕
  • 寻找旧的/不存在的遥控器的可能迹象。查找pushdefault

    1
    2
    [remote]
      pushdefault = oldremote

    更新oldremote值并保存。

    git push现在应该可以工作了。


    我刚刚发现的另一个解决这个问题的方法(即使我先删除了原点,但似乎是错误的)是直接操作git-config:

    1
    git config remote.origin.url url-to-my-other-remote


    非常简单,把这里的一些伟大的评论和我自己的研究拼凑在一起。

    首先,检查要连接到远程分支的本地分支:

    1
    git checkout mybranch

    下一步:

    1
    git branch -u origin/mybranch

    哪里:

    1
    git branch -u {remote name}/{branch name}

    您应该收到一条消息:

    1
    "Branch mybranch set up to track remote branch mybranch from origin."