git push -u 有什么区别?

What is the difference between git push -u?

在 GitHub,他们建议做 git push -u origin master,而不是 git push。

主要区别是什么?

来自man git-push

   -u, --set-upstream
      For every branch that is up to date or successfully pushed, add
      upstream (tracking) reference ...

基本上,这意味着它不仅会将您的 master 上传到 originmaster,还会将本地副本 origin/master 设置为跟踪分支,即您本地 master.

upstream

这通常已经是这样了,所以如果是这种情况,处于 master 并执行 git push -u origin master 与普通的 git push 没有什么不同。但是如果你错误地配置了你的存储库,那么有时长版本会自动修复它。

自然地,不假思索地执行该命令可能会导致糟糕的情况,例如,如果您在 public 工作分支中并执行此操作:

{mybranch} $ git push -u origin master

现在您将 mybranch 上传为 master 并将 origin/master 设置为 mybranch 上游 ,而不是正确的 origin/mybranch,你弄得一团糟!

我的猜测是 GitHub 建议 git 新手避免致电他们的客户支持。但我不建议将其作为推送的默认设置。事实上,如果你错误地配置了上游,一个普通的 git push 将失败并显示这条消息:

fatal: The current branch a has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master

它会准确告诉您发生了什么以及如何解决它(--set-upstream-u 的同义词)。