git push -u origin master 与git push --set-upstream origin master

发布时间 2023-06-15 14:26:23作者: 上杉家主-上杉绘梨衣

在github上新建仓库时提示push代码的指令:

git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/helloyzp/AlgorithmProject.git
git push -u origin main

以前的提示一直是 git push --set-upstream origin master ,而现在变为了git push -u origin main,

即新建的仓库的默认分支从master变成了main,且指令从git push --set-upstream变为了git push -u,有什么区别?

其实git push -u是git push --set-upstream的缩写版本啦~ ,哈哈哈

至于origin,就是远程仓库的别名啦,只不过github把远程仓库的名称默认称为origin,你也可以改为其他名称,就像github之前仓库的默认分支是叫做master,而现在github把它改为了main。

当然,当前分支不仅仅可以只与一个远程仓库的分支建立关联,要想与多个远程仓库的分支建立联系,可以使用 git remote add 指令添加其他的远程仓库,取个与origin不一样的别名就可以啦,然后使用 git branch --set-upstream-to 关联到远程仓库中的分支,后续执行git push就是推到新的远程仓库啦。

upstream 是指本地分支与远程仓库中的分支之间的流通道,建立流通道就是建立本地分支与远程分支的关联,建立之后,后续就可以直接使用git push指令把本地分支的commit推到远程分支中。

git push --set-upstream origin main 的作用是:
1.先把本地的当前分支推送到远程仓库origin的main分支
2.然后把本地的当前分支关联到远程仓库origin的main分支
即相当于 git push origin main 加上 git branch --set-upstream-to=origin/main main的作用,即先把本地分支push到远程仓库中,然后再建立本地分支与远程分支的关联。

不带任何参数的git push, 默认只推送当前分支,这叫做simple方式。此外,还有一种叫做matching方式,会推送所有有对应的远程分支的本地分支。
Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令:
如果想使用matching模式,可以使用git config --global push.default matching设置
如果想使用simple模式,可以使用git config --global push.default simple设置