改变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
现在, status
, push
和pull
指向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