我想更改Git默认远程分支目的地,所以我可以
git push
而不是:
git push upstream
目前设置为原始遥控器,我想将其设置为不同的遥控器。
我试图删除原始(克隆自)远程
git remote rm origin
哪个删除了原始遥控器。但是没有解决git push
问题。我还是得到了:
致命:没有配置推送目的地。从中指定URL 命令行或使用...
配置远程存储库
我也试过玩:
git remote set-url --push myfork origin
和其他选项但似乎都没有用(可能是因为我太快删除了原点遥控器?)
在answer here之后我试图改变:
git config push.default upstream (or matching)
但都没有奏效。
答案 0 :(得分:167)
您可以使用git push -u <remote_name> <local_branch_name>
设置默认上游。有关详细信息,请参阅documentation for git push。
答案 1 :(得分:72)
要更改哪个上游远程“连接”到您的分支,请使用带有上游配置标志的git branch
命令。
首先确保遥控器存在:
git remote -vv
为当前(签出)分支设置首选远程:
git branch --set-upstream-to <remote-name>
使用正确的上游远程设置验证分支:
git branch -vv
答案 2 :(得分:32)
您可以使用此命令轻松更改分支的默认远程
git push -u <remote_name> --all
答案 3 :(得分:30)
使用Git 2.3.2 ...
git branch --set-upstream-to myfork/master
现在status
,push
和pull
指向myfork
远程
答案 4 :(得分:13)
只是澄清(在ubuntu 12.04上使用git版本1.7.9.5):
Git将添加/删除遥控器。这些是附加服务器的git的远程实例。
git remote add myremote git://remoteurl
然后您可以像这样获取所说的git存储库:
git fetch myremote
这似乎创建了一个名为'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
您现在应该与远程存储库保持同步,并且您的pull / push应该绑定到相应的远程数据库。您可以通过这种方式切换遥控器,每个分支。 [注] [1]
根据a The Official Git Config Documentation,您可以设置默认推送分支(只在该页面上搜索remote.pushdefault),但请记住,这不会影响存储库/分支机构已经存在,所以这将工作,但只适用于新的存储库/分支机构。您应该记住--global
将设置用户特定的存储库默认值(〜/ .gitconfig),--system
将设置系统范围的存储库默认值(/ etc / gitconfig),并且没有标志将设置配置选项当前存储库(./。gitconfig)。
还应注意 push.default 配置选项用于配置 ref-spec 行为,不 远程< / em>行为。
[1]:git branch --set-upstream myotherremote
通常会在这里工作,但是如果使用git branch --set-upstream myremote
,git会抱怨它不会将分支设置为自己的远程。但我相信这是不正确的行为。
答案 5 :(得分:7)
如果您执行了git push origin -u localBranchName:remoteBranchName
和顺序git push
命令,则会收到错误,然后原点不存在,请按照以下步骤操作:
git remote -v
检查是否有任何我不在乎的遥控器。
使用git remote remove 'name'
git config --edit
查找旧的/不存在的遥控器的可能迹象。
寻找pushdefault
:
[remote]
pushdefault = oldremote
更新oldremote
值并保存。
git push
现在应该可以使用了。
答案 6 :(得分:4)
我刚刚找到解决此问题的另一种技术(即使我先删除了原点,似乎是一个错误)是直接操作git配置:
git config remote.origin.url url-to-my-other-remote
答案 7 :(得分:3)
非常简单,并将这里的一些重要评论与我自己的研究结合起来。
首先,查看您想要绑定到远程分支的本地分支:
git checkout mybranch
下一步:
git branch -u origin/mybranch
其中:
git branch -u {remote name}/{branch name}
你应该收到一条消息:
"Branch mybranch set up to track remote branch mybranch from origin."
答案 8 :(得分:1)
git push -u origin head
正是我要找的。h2>
这是它为我解决的问题:
fatal: The current branch task/PLAT-1924-datagrid-tool-panel-scrollbar has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin task/PLAT-1924-datagrid-tool-panel-scrollbar
➜ frontend git:(task/PLAT-1924-datagrid-tool-panel-scrollbar) git push -u origin head
我可以使用键盘快捷键或别名输入 git push --set-upstream origin task/PLAT-1924-datagrid-tool-panel-scrollbar
,而不是使用我的鼠标从 Git (git push -u origin head
) 中复制建议然后粘贴并运行它不需要特定于分支。
答案 9 :(得分:0)
在仓库中查看.git/config
可能会有所帮助,它将列出所有遥控器以及每个分支的默认遥控器
例如
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@gitea.xxx.be:fii/web2016.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "bugfix/#8302"]
remote = origin
merge = "refs/heads/bugfix/#8302"
[branch "feature/#8331"]
remote = origin
merge = "refs/heads/feature/#8331"
[remote "scm"]
url = https://scm.xxx.be/git/web2016bs.git
fetch = +refs/heads/*:refs/remotes/scm/*
您可以在此文件中进行手动更改,以删除不需要的遥控器,或更新您拥有的不同分支的默认遥控器
答案 10 :(得分:0)
就我而言,我通过以下措施解决了问题:
*运行git config --edit
*在git配置文件中:
[branch "master"]
remote = origin # <--- change the default origin here
答案 11 :(得分:0)
git remote set-url --push origin
应该可以工作,但是您需要显式提供url而不是其他远程名称,例如
git remote set-url --push origin git@github.com:contributor/repo.git
您可以通过执行git remote -v
来确认是否可行。例如
λ ~/go/src/github.com/stretchr/testify/ master git remote -v
fork git@github.com:contributor/testify.git (fetch)
fork git@github.com:contributor/testify.git (push)
origin git@github.com:stretchr/testify (fetch)
origin git@github.com:contributor/testify.git (push)
答案 12 :(得分:0)
像 docs 说:
<块引用>当命令行没有使用 <repository>
参数指定推送到哪里时,会参考当前分支的 branch.*.remote
配置来确定推送到哪里。如果缺少配置,则默认为origin。