搜索
首页开发工具gitgit中push -u是什么意思

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

git中push -u是什么意思

本文操作环境: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.8a11bc632ea32a57b3e3693c7987c420.merge in git-config(1).

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

branch.8a11bc632ea32a57b3e3693c7987c420.merge

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

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

当您git pull从分支进行操作而未指定源远程或分支时,git会查看 branch.8a11bc632ea32a57b3e3693c7987c420.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 <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> 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中push -u是什么意思的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
git vs. github:了解差异git vs. github:了解差异May 03, 2025 am 12:08 AM

Git是分布式版本控制系统,GitHub是基于Git的在线平台。Git用于版本控制、分支管理和合并,GitHub提供代码托管、协作工具和社交网络功能。

github:前端,git:后端github:前端,git:后端May 02, 2025 am 12:16 AM

Git是后端版本控制系统,GitHub是基于Git的前端协作平台。Git管理代码版本,GitHub提供用户界面和协作工具,两者协同工作提升开发效率。

终极摊牌:git vs. github终极摊牌:git vs. githubMay 01, 2025 am 12:23 AM

Git是版本控制系统,GitHub是基于Git的代码托管平台。Git用于管理代码版本和历史,GitHub提供代码托管和协作功能。Git适用于所有需要版本控制的项目,GitHub适合团队协作和开源项目。

git vs. github:开发人员的观点git vs. github:开发人员的观点Apr 30, 2025 am 12:14 AM

Git是分布式版本控制系统,GitHub是基于Git的在线平台。Git提供版本控制功能,如分支管理和提交历史;GitHub提供协作工具,如代码审查和项目管理。

git:版本控制系统,github:平台git:版本控制系统,github:平台Apr 29, 2025 am 12:31 AM

Git和GitHub是现代软件开发的核心工具。Git是一个分布式版本控制系统,GitHub则是一个协作平台。使用Git和GitHub可以提高开发效率并增强团队协作。

git:技术,github:平台git:技术,github:平台Apr 28, 2025 am 12:09 AM

Git是由林纳斯·托瓦兹在2005年创建的分布式版本控制系统,GitHub则是基于Git的在线协作平台。Git通过快照记录文件变化,支持分支模型,GitHub则提供PullRequest等工具提升协作效率。

GitHub的目的:版本控制,协作等等GitHub的目的:版本控制,协作等等Apr 27, 2025 am 12:05 AM

GitHub不仅仅是版本控制工具,它还提供协作、项目管理和社区交流功能。1)版本控制:利用Git追踪代码变化。2)协作:通过PullRequest提交代码变更。3)项目管理:使用Issues和Project板块管理任务。4)社区交流:通过fork和参与开源项目进行学习和交流。

github vs. git:了解关键差异github vs. git:了解关键差异Apr 26, 2025 am 12:12 AM

Git和GitHub是不同的工具:Git是版本控制系统,GitHub是基于Git的在线平台。Git用于管理代码版本,GitHub提供协作和托管功能。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境