改变Git远程'推到'默认

我想更改Git的默认远程分支目标,所以我可以

git push 

代替:

 git push upstream 

目前这是设置为远程原点,我想将其设置为不同的远程。

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

 git remote rm origin 

哪个删除了原来的遥控器。 但是并没有解决git push问题。 我仍然得到:

致命的:没有configuration的推送目的地。 从中指定URL
命令行或configuration远程存储库使用…

我也试着玩:

 git remote set-url --push myfork origin 

和其他选项,但似乎没有工作(也许是因为我太早删除起源远程?)

在这里的答案我试图改变:

 git config push.default upstream (or matching) 

但都没有工作。

你可以使用git push -u <remote_name> <local_branch_name>来设置默认的上游。 有关更多详细信息,请参阅git push文档 。

要更改哪个上游远程连接到分支,请使用带有上游configuration标志的git branch命令。

确保首先存在遥控器:

git remote -vv

设置当前(签出)分支的首选远程设备:

git branch --set-upstream-to <remote-name>

validation分支是使用正确的上游远程设置的:

git branch -vv

使用Git 2.3.2 …

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

现在, statuspushpull指向myfork远程

您可以使用此命令轻松地一次简单地更改分支的默认远程

 git push -u <remote_name> --all 

只是澄清(在Ubuntu 12.04上使用git版本1.7.9.5):

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

 git remote add myremote git://remoteurl 

然后你可以像这样获取上述的git仓库:

 git fetch myremote 

看来这会创build一个名为“myremote”的分支,但是分支的远程并不会自动设置。 为此,您必须执行以下操作:

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

 git config -l | grep myremote 

你应该看到像这样的东西:

 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=. ,那么你应该继续:

 git config branch.myremote.remote myremote git checkout myremote git pull 

你现在应该和远程仓库保持同步,你的拉/推应该绑定到适当的远程。 您可以按照每个分支以这种方式切换遥控器。 [注] [1]

根据官方的Gitconfiguration文档 ,你可以设置一个默认的推送分支(只要在该页面上searchremote.pushdefault),但是请记住,这不会影响已经存在的仓库/分支,所以这只会工作,为新的存储库/分支。 你应该记住--global将设置用户特定的默认存储库(〜/ .gitconfig), – 系统将设置系统范围的存储库默认值(/ etc / gitconfig),没有标记会为当前的存储库设置configuration选项./.gitconfig)。

还应该注意的是, push.defaultconfiguration选项用于configurationref-spec行为, 而不是 远程行为。

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

我刚刚发现的解决这个问题的另一个技术(即使我先删除了原点,看起来是个错误),直接操作git config:

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