git push -u origin 和 git push --set-upstream origin 有什么区别

What is the difference between git push -u origin and git push --set-upstream origin

我正在学习如何使用 git,我需要从主 github 存储库克隆,对其进行分支,进行更改,然后将分支推送到 git hub repo - 但我发现自己对最好的方法是什么有点困惑。我知道 git 网上有很多资源,但我找不到一个正是这个问题(尽管如果我错了我很乐意使用它)。

我一直在测试我自己的私人 github 回购以查看差异,但似乎没有任何差异。

  1. 从 repo 克隆。
git clone git@github.com:organization/repo
  1. 创建一个新分支
git checkout -b newbranch
  1. 进行更改、添加和提交
touch file
git add file
git commit -m "added file"
  1. 当我尝试推送时没有上游
git push 

我收到一条错误消息“严重:当前分支 newbranch 没有上游分支。 要推送当前分支并将远程设置为上游,请使用 git push --set-upstream origin newbranch

但我也看到很多在线教程使用 git push -u origin newbranch

这两者在功能上有什么区别吗?我敢肯定网上有一些关于差异的资源,但是 git 让我有点困惑,虽然我会直接问这个问题,看看人们是怎么想的。

当您设置上游(或跟踪)分支时,您可以简单地执行拉取和推送,而无需使用 -u 而不是 --set-upstream 指定目标分支。 Git 自动知道它必须将新提交提取到远程跟踪分支。

这是一篇关于它的文章here

它们完全一样。 unix 命令的许多选项都有短格式和长格式。您可以通过 运行 git help push.

亲自查看
       -u, --set-upstream
           For every branch that is up to date or successfully pushed, add
           upstream (tracking) reference, used by argument-less git-pull(1)
           and other commands. For more information, see branch.<name>.merge
           in git-config(1).