如何配置 'git push -u' 来推断远程分支名称?

How to configure 'git push -u' to infer the remote branch name?

我检查了一个新分支

git checkout -b mynewbranch

进行一些更改并提交它们

git add *
git commit -m "Initial commit on this branch"

那我去push了。由于我没有设置上游分支,git 通知我必须指定 --set-upstream <remote> <branch> 选项。我觉得在过去的几年里我已经能够做到

git push -u

如果我当前的分支在 origin 上不存在,它会创建一个同名的分支,然后毫不费力地推送到那个分支。但是我最近重新安装了 git,现在当我 运行 git push -u 它继续抱怨没有上游分支。

我发现我可以修改 push.default 的设置,通过将其设置为 current,使推送自动执行我期望的操作,即使是 -u 选项,但我喜欢必须指定-u 这样我就知道何时设置该跟踪信息。但是,如果我不指定,我希望 -u 自动使用我当前的分支名称。

我可以设置什么选项来使 -u 像我记得的那样运行?

编辑:我收到的实际错误消息是

$> git push -u
fatal: The current branch mynewbranch has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin mynewbranch

更新:经过进一步测试,这似乎只发生在私人回购中。我注意到在 GitHub -u 上使用 public 存储库可能就足够了,但是在私有 GitHub 存储库或 AWS CodeCommit 上的存储库中,我收到上面列出的错误。

I do see that the --set-upstream flag has been removed (looks like in 2.15 maybe) and that --set-upstream-to is the replacement.

实际上是 Git 1.8: see here and git 1.8.0 announce:

"git branch --set-upstream" is deprecated and may be removed in a relatively distant future.
"git branch [-u|--set-upstream-to]" has been introduced with a saner order of arguments.

git push uses that same -u shortcut.

我总是看到 git push -u 与参数一起使用:

git push -u origin myBranch

完成后,下一次推送将简单地使用:git push