git push & git pull 推送/拉取分支的具体使用

git push与git pull是一对推送/拉取分支的git命令。

git push 使用本地的对应分支来更新对应的远程分支。

$ git push <远程主机名> <本地分支名>:<远程分支名>

注意: 命令中的本地分支是指将要被推送到远端的分支,而远程分支是指推送的目标分支,即将本地分支合并到远程分支。
如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

$ git push origin master

上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。

origin是一个远程厂库地址。

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,这条命令是删除远程master分支。

$ git push origin :master
# 等同于
$ git push origin --delete master

上面命令表示删除origin主机的master分支。

如果当前分支与远程分支之间存在追踪关系(即分支名相同),则本地分支和远程分支都可以省略。

$ git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。

如果当前分支只有一个追踪分支,那么主机名都可以省略。

$ git push

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

$ git push -u origin master

上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

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

$ git config --global push.default matching
# 或者
$ git config --global push.default simple

还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项。

$ git push --all origin

上面命令表示,将所有本地分支都推送到origin主机。

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。

$ git push --force origin

上面命令使用–force选项,结果导致在远程主机产生一个”非直进式”的合并(non-fast-forward merge)。除非你很确定要这样做,否则应该尽量避免使用–force选项。

最后,git push不会推送标签(tag),除非使用–tags选项。

$ git push origin --tags

 git pull 获取并合并其他的厂库,或者本地的其他分支。

git pull 与 git push操作的目的相同,但是操作的目标相反。命令格式如下:

git pull <远程主机> <远程分支>:<本地分支>

例如:

git pull origin master:my_test

上面的命令是将origin厂库的master分支拉取并合并到本地的my_test分支上。

如果省略本地分支,则将自动合并到当前所在分支上。如下:

git pull origin master

注:如果你想参与github上的一些优秀的项目,则下面提供一个通用的例子:

首先,需要一个github的账号,并fork一个你感兴趣的repository。

下面描述过程中会涉及两个远程主分支,为了很好的区别,我们把fork出来的主分支称为远程A repository,本fork的分支称为远程B repository

$git clone <远程Arepository> #克隆你fork出来的分支

$git remote add <远程Brepository标签> git@github.com:XXXX/ceph.git #添加远程Brepository标签

$git pull <远程B厂库标签> master:master #从远程Brepository的master分支拉取最新objects合并到本地master分支

$git checkout YYYY #切换到要修改的分支上

$git branch develop; git checkout develop #在当前分支的基础上创建一个开发分支,并切换到该分支上,你将在该分支上coding

coding...... #在工作区coding

$git add .#将修改保存到索引区

$git commit -a #将修改提交到本地分区

$git push origin my_test:my_test #将本地分支my_test提交到远程A repository的my_test分支上

然后在github web界面上将my_test分支合并到你需改的远程B repository 分支上。等待管理员review,如果有问题,就继续在develop分支当修改,并commit –amend,在之前的commit上修改。知道被meger。

到此这篇关于git push & git pull 推送/拉取分支的具体使用的文章就介绍到这了,更多相关git push & git pull 推送/拉取分支内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • git pull时冲突的几种解决方式(小结)

    仅结合本人使用场景,方法可能不是最优的 1. 忽略本地修改,强制拉取远程到本地 主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉 git fetch --all git reset --hard origin/dev git pull 关于commit和pull的先后顺序,commit-->pull-->push 和 pull-->commit-->push的顺序,两种情况都遇到过代码冲突.解决方法如下: 2. 未commit先pull,

  • Git pull(拉取),push(上传)相关命令介绍

    前言:博主最近在学习git命令,因为git是一个非常好用的分布式版本管理工具,功能比svn强大,与SVN不同点是Git去中心化,每一个分支都是一个中心,并且支持本地仓库存储,像如今很多大公司都用git做版本控制.话不多说,具体命令整理如下: git拉取远程代码 git clone  https://xxx.git git拉取远程指定分支下代码(-b  分支名称) git clone -b v2.8.1 https://xxx.git 初始化一个本地仓库,在同级目录下会出现一个隐藏的.git文件

  • git fetch与git pull的区别详解

    git fetch和git pull都可以将远端仓库更新至本地那么他们之间有何区别?想要弄清楚这个问题有有几个概念不得不提. FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本. commit-id:在每次本地工作完成后,都会做一个git commit 操作来保存当前工作到本地的repo, 此时会产生一个commit-id,这是一个能唯一标识一个版本的序列号. 在使用git push后,这个序列号还会同步到远程仓库. 有了以上的概念再来

  • git如何撤销commit的方法(未push)

    撤销commit一般用git reset ,语法如下: git reset [ --mixed | --soft | --hard] [<commit ID>] 1.使用参数--mixed(默认参数),如git reset --mixed <commit ID>或git reset <commit ID> 撤销git commit,撤销git add,保留编辑器改动代码 2.使用参数--soft,如git reset --soft<commit ID> 撤销

  • Git发现git push origin master 报错的解决方法

    git push origin master 报错的解决方法,分享给大家,具体如下: 错误提示如下 [root@linux1 php]# git push -u origin master To git@github.com:kangvcar/Results-Systems--PHP.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@github.com:kangvcar

  • github pull最新代码实现方法

    github现在已经经常用了,但是经常遇到下面的问题 比如:从一个项目A中fork了一个分支B,并且在分支B有了改动.过了几天后,项目A中的代码应该会有很多人提交修改了,现在想将最新的代码pull到分支B.请问如何做呢?在github界面上没有看到响应的按钮 解决步骤:   假设你fork的项目原始地址是urlRep, 你自己的是urlYou $ git remote  add upstream urlRep # 你本地的origin应该跟自己的remote,并且当前本地branch是maste

  • git push & git pull 推送/拉取分支的具体使用

    git push与git pull是一对推送/拉取分支的git命令. git push 使用本地的对应分支来更新对应的远程分支. $ git push <远程主机名> <本地分支名>:<远程分支名> 注意: 命令中的本地分支是指将要被推送到远端的分支,而远程分支是指推送的目标分支,即将本地分支合并到远程分支. 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建. $ git pus

  • git push 本地项目推送到远程分支的方法(git命令版)

    1.在本地建立项目  可使用Eclipse,Idea等开发工具创建项目 打开根目录到所在在工程名的下一级 2.使用git 客户端 进入到上图目录HelloWord的文件夹里面 3.初始化项目 git init 4.HelloWord工程结构的添加 命令 git add -A 5.提交git到版本 -m是提交的注释 git commit -m "这是注释:初始化项目" 6.远程git建立好项目 7.配置远程仓库  origin是远程仓库的别名 代替xxx.git的地址 git remot

  • 一文掌握git push命令

    目录 PS:git push 命令详解 直到最近通过一写练习才更加清晰了一点 1. 无参数,直接 git push 2. git push -u origin 当前分支名 or git push --set-upstream origin abc 3. git push --all 以上列举的参考文献将的非常棒,是目前我见到的写的最完整的. git push命令用于将本地分支的更新,推送到远程主机.它的格式与git pull命令相仿. git push <远程主机名> <本地分支名>

  • git push origin HEAD:refs/for/master 的意思分析

    目录 git push origin HEAD:refs/for/master 的意思 PS:git 提交代码常用命令 一.master分支代码提交过程 二.master分支与2.08分支切换方法 三.2.08分支代码提交过程 git push origin HEAD:refs/for/master 的意思 1.git push <远程主机名> <本地分支名> : <远程分支名> 例如git push origin master:refs/for/master是将本地的

  • Git pull(拉取)及push(上传)相关命令介绍

    前言:博主最近在学习git命令,因为git是一个非常好用的分布式版本管理工具,功能比svn强大,与SVN不同点是Git去中心化,每一个分支都是一个中心,并且支持本地仓库存储,像如今很多大公司都用git做版本控制.话不多说,具体命令整理如下: git拉取远程代码 git clone https://xxx.git git拉取远程指定分支下代码(-b  分支名称) git clone -b v2.8.1 https://xxx.git 初始化一个本地仓库,在同级目录下会出现一个隐藏的.git文件 g

  • iOS推送的那些事

    直接切入主题,讲讲如何模拟推送以及处理推送消息.在进入主题之前,我先说几个关键流程: 1.建Push SSL Certification(推送证书) 2.OS客户端注册Push功能并获得DeviceToken 3.用Provider向APNS发送Push消息 4.OS客户端接收处理由APNS发来的消息 推送流程图: Provider:就是为指定iOS设备应用程序提供Push的服务器.如果iOS设备的应用程序是客户端的话,那么Provider可以理解为服务端(推送消息的发起者) APNs:Appl

  • php基于Redis消息队列实现的消息推送的方法

    基本知识点 重点用到了以下命令实现我们的消息推送 brpop 阻塞模式 从队列右边获取值之后删除 brpoplpush 从队列A的右边取值之后删除,从左侧放置到队列B中 逻辑分析 在普通的任务脚本中写入push_queue队列要发送消息的目标,并为目标设置一个要推送的内容,永不过期 RedisPushQueue中brpoplpush处理,处理后的值放到temp_queue,主要防止程序崩溃造成推送失败 RedisAutoDeleteTempqueueItems处理temp_queue,这里用到了

  • 漂流瓶推送需求的逻辑实现代码

    本身这两个数据之间没有关联,并且sql语句里面的排序规则不能满足要求:sql里只有数据中前一个排序条件出现相同的情况时才考虑后面的排序条件.实际情况是如果按先推送时间后距离排序的话,距离就起不了作用,反之亦然. 要让两个数据产生关联,有一种做法是将这两个数据做加法或减法后排序,但是这必须要考虑以下情况 两个数据的数据类型不一致,一个是日期类型另一个是双精度类型 必须统一两个数据的排序方向,不能推送时间取正序而距离取反序,视实际需求而定 将这两个数据都转换成一种类型,需要一个系数来平衡它们.如果一

  • laravel框架使用极光推送消息操作示例

    本文实例讲述了laravel框架使用极光推送消息.分享给大家供大家参考,具体如下: 最近需要使用极光推送往客户端推消息,所以这里记录下使用过程. 极光推送的服务端文档: https://docs.jiguang.cn/jpush/server/push/server_overview/ 极光推送服务端PHP代码: https://github.com/jpush/jpush-api-php-client 在laravel项目下安装极光推送 composer require jpush/jpush

随机推荐