git中push -u是什么意思

发布时间 - 2022-07-01 00:00:00    点击率:
在git中,“push -u”的意思是将本地的分支版本上传到远程合并,并且记录push到远程分支的默认值;当添加“-u”参数时,表示下次继续push的这个远端分支的时候推送命令就可以简写成“git push”。

本文操作环境:Windows10系统、Git2.30.0版、Dell G3电脑。

git中push -u是什么意思

git push 命令用于从将本地的分支版本上传到远程并合并。

一般将本地仓库推送到远程仓库的时候一般会使用 git push 命令。而作为新手,在网上看到一些教程有的会在 git push 的时候带上一个 -u 参数,而有的则没有。而推送的实际结果没有什么区别。就很好奇 -u 参数的作用到底是什么?

搜索了一番,综合了一些大家的说明和解析,总结记录一下。

参数解析:

首先对于 git 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..merge in git-config(1).

在这个描述中,可以看到 -u 参数与下面这个变量相关

branch..merge

branch..merge与branch..remote一起定义给定分支的上游分支(upstream)。它告诉git fetch/git pull要合并哪个分支,还可以影响git push.

而upstream是指其他人将从中获取的主要存储库,例如您的GitHub存储库。-u选项自动为您设置上游,将您的仓库链接到一个中央仓库。这样,将来Git会“知道”您要推送到的位置以及您要从哪里提取的信息,因此您可以使用git pull或git push不使用参数。 

当您git pull从分支进行操作而未指定源远程或分支时,git会查看 branch..merge 设置以了解从何处提取。而正是git push -u 命令为您要推送的分支设置此信息。

至此,简单来说,带上-u 参数其实就相当于记录了push到远端分支的默认值,这样当下次我们还想要继续push的这个远端分支的时候推送命令就可以简写成git push即可。

示例展示:

下面展示一个示例来说明这一点。

andy@AndyMacBookPro:/usr/local/github/andy/php-examples$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull  
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/ test

这个就是如果你之前未使用 -u 参数,后面省略了想要pull的分支参数而产生的结果。pull 因为没有track for the current branch. 所以他不知道你要从哪里pull,所以这也就是 -u 参数的意义,指定trach branch。

其实你可以在指定完-u之后,去.git/config看GIT配置文件,可以看到下面有了branch "test"的分支的记录:

[branch "master"] 
 remote = origin
merge = refs/heads/master 
[branch "test"]
remote = origin
merge = refs/heads/test

这样git才能知道当前test下的remote和merge的信息,如果你在git push的时候没有带入-u参数,那么config中就不会有branch "test"这一项。

 [branch "master"]
    remote = origin
    merge = refs/heads/master

配置说明,这告诉Git 2件事:

当您在master分支上时,默认的遥控器是origin。

在git pullmaster分支上使用时(未指定任何远程和分支),请使用默认的remote(源)并合并来自remote master分支的更改。

配置修改

您可以手动去.git/config修改GIT配置文件内容,也可以使用命令行设置这些选项。

 $ git config branch.master.remote origin
 $ git config branch.master.merge refs/heads/master

如果使用命令进行配置,它将有一定的纠错能力。比如您键入了一个不存在的分支或者您没有执行git remote add 操作。在较新的git中,希望您使用 git branch --set-upstream-to=origin/master master

其实,执行添加了-u 参数的命令 git push -u origin master就相当于是执行了

git push origin master 和

git branch --set-upstream master origin/master。

所以,在进行推送代码到远端分支,且之后希望持续向该远程分支推送,则可以在推送命令中添加 -u 参数,简化之后的推送命令输入。

推荐学习:《Git教程》


# git  # less  # for  # date  # github  # 远端  # 您的  # 您要  # 您可以  # 可以看到  # 配置文件  # 就可以  # 默认值  # 下次  # 这一 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何处理异常和错误?(Handler示例)  JavaScript如何操作视频_媒体API怎么控制播放  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Linux系统运维自动化项目教程_Ansible批量管理实战  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何用腾讯建站主机快速创建免费网站?  如何在橙子建站上传落地页?操作指南详解  Laravel观察者模式如何使用_Laravel Model Observer配置  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何在阿里云ECS服务器部署织梦CMS网站?  如何彻底卸载建站之星软件?  如何在 Pandas 中基于一列条件计算另一列的分组均值  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  专业商城网站制作公司有哪些,pi商城官网是哪个?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  php结合redis实现高并发下的抢购、秒杀功能的实例  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  bootstrap日历插件datetimepicker使用方法  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何在IIS中配置站点IP、端口及主机头?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在万网利用已有域名快速建站?  网站制作软件有哪些,制图软件有哪些?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何自定义建站之星网站的导航菜单样式?  如何用狗爹虚拟主机快速搭建网站?  python中快速进行多个字符替换的方法小结  大型企业网站制作流程,做网站需要注册公司吗?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Android使用GridView实现日历的简单功能  如何在万网主机上快速搭建网站?  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel如何使用Service Container和依赖注入?(代码示例)  简单实现Android验证码  Laravel如何发送系统通知?(Notification渠道示例)  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  微信小程序 五星评分(包括半颗星评分)实例代码  java获取注册ip实例