git push不加参数默认必须push到origin吗? 如果origin不存在怎么办?

比如我把origin改为github, 然后设置了upstream. 然后, git pull正常, git push好像一定要push到origin, 然后报错, 这是写死的吗? git push github 工作正常.

设置了upstream都不行, 有点出乎意料了.

不是有elsewhere吗

git push 默认参数为 origin。但是你可以把 origin 指向任何地址。

cat .git/config 看看。

你看下当前仓库下的 .git/config 里的设置,应该一看就明白

刚打开.git/config看了, [branch “master”]下面有个pushRemote, 是origin, 手工改掉后ok.

很奇怪的是, --set-upstream竟然不能影响这个值, 而且它就是push的参数, 却对push不起作用. 比较出乎意料.

我说的不是magit, magit里面工作正常.

已经手工修改了. 手工修改比较麻烦.

试试命令 git config remote.pushDefault github

看了下gitconfig的文档, 这个值也会被pushRemote覆盖掉. 总共有三个值会影响, 他们的优先级顺序如下:

  1. branch.xxx.remote
  2. remote.pushDefault
  3. branch.xxx.pushRemote

越往后优先级越高, 会覆盖前面的. 搞得挺复杂. --set-upstream应该是修改的第一个.

当然,但除非有特别情形,不需要为某个 branch 单独指定地址,不然换个分支地址就换了,容易混乱

没修改过这个文件, 也没config过, 基本都是用的默认, 不知道怎么产生的.