工作中,我们会用到git pull来从远程仓库"同步"代码,通常有三种方式;

git pull origin <remote_branch>:<local_branch>
git pull origin <remote_branch>
git pull

这三种用法充分诠释了什么是简即繁,繁即简;看上去简单的,往往背后蕴藏玄机; 

测试环境:
本地分支:master和dev
远程分支:master和dev$ git branch -a
* devmasterremotes/origin/HEAD -> origin/masterremotes/origin/devremotes/origin/master

1.git pull origin <remote_branch>:<local_branch>

这种用法写起来最为繁琐,但最好理解:

场景:当本地的当前分支不是local_branch;
作用:将远程分支拉取到指定本地分支;

例如:当前分支是dev,但是你想把远程master”同步”到本地master,但又不想使checkout切换到master分支;
这时你就可以使用git pull origin master:master

zhangchangzhi@ZBXXXX /e/02.Workspace-test/gitTest (dev)
$ git pull origin master:master
From https://github.com/jinxintang/gitTesta09fdc4..941758f  master     -> master
Already up-to-date.

 从上述代码可以看到,我当前分支为dev,但执行"同步”操作的却是在master分支; 

2.git pull origin <remote_branch>

有了上面的例子,这种使用方法的场景和作用就好理解了:

场景:在当前分支上进行同步操作;
作用:将指定远程分支同步到当前本地分支;

zhangchangzhi@ZBXXX /e/02.Workspace-test/gitTest (dev)
$ git pull origin master
From https://github.com/jinxintang/gitTest* branch            master     -> FETCH_HEAD
Already up-to-date.

 把远程master分支同步到HEAD分支(HEAD分支指向当前位置);

3.git pull

这种写法最简单,也最常用,但是隐含的知识也是最多的;

场景:本地分支已经和想要拉取的分支建立了“关联”关系;
作用:拉取所有远程分支的新版本"坐标",并同步当前分支的本地代码(具体根据关联分支而定)

什么是"关联"分支?

首先我们先使用git branch -vv 查看一下目前分支的“关联”情况;

$ git branch -vv
* dev    1a1b215 [origin/dev] Merge branch 'master' of https://github.com/jinxintang/gitTest into devmaster a09fdc4 [origin/master] create pull

  

可以看到我们的本地的dev关联的是远程(origin)的dev,本地的master关联的是远程(origin)的master;
那么这种关联是如何建立、是否可以修改呢;
配置本地分支与远程分支的三种方法:
1.检出时建立关联关系:git checkout -b dev origin/dev
当我们检查时,git会自动为我们检出的分支和远程分支建立关联关系;
2.提交时配置关联关系:git push -u origin <remote_branch>git push --set-upstream origin <remote_branch>
zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git branch -vv
* dev_zcz 3b7001a [origin/dev] cmmaster  a09fdc4 [origin/master] create pullzhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git push -u origin dev_zcz
Everything up-to-date
Branch dev_zcz set up to track remote branch dev_zcz from origin.zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git branch -vv
* dev_zcz 3b7001a [origin/dev_zcz] cmmaster  a09fdc4 [origin/master] create pull

通过上面的例子可以看到push前dev_zcz关联的是origin/dev,执行push -u 后管理分支改为origin/dev_zcz
注:默认配置下,提交时本地分支需和远程分支同名

 

转载地址:https://www.jianshu.com/p/55b6720264ee

转载于:https://www.cnblogs.com/weidaijie/p/10893494.html

git pul的使用相关推荐

  1. git pul出错_如何使用Git出错-以及如何做。

    git pul出错 I am not able to commit to the remote repository, let me do a force push. 我无法提交到远程存储库,请强制执 ...

  2. git push /git pul 每次都要输入账号密码问题

    git config --global credential.helper store 这里的是git命令 ,所以在linux win系统都可以使用,输入完后 在进行git pull /push .在 ...

  3. git pul 无法拉取代码问题

    git branch --set-upstream-to=origin/远程分支名称  本地分支名称 例如:git branch --set-upstream-to=origin/yprod ypro ...

  4. Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)

    1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...

  5. 3 :git分支机制

    文章目录 3.1分支机制简述 3.1.1创建新分支 3.1.2切換分支 3.2基本的分支与合并操作 3.2.1基本的分支操作 3.2.2基本的合并操作 3.2.3基本的合并冲突处理 3.5远程分支 3 ...

  6. 有效的避免代码提交冲突,有效的避免git提交冲突

    Microsoft Windows [版本 10.0.17763.1577] (c) 2018 Microsoft Corporation.保留所有权利.D:\work\HCC\platform> ...

  7. eclipse 如何关联git_git的相关操作

    2019-8-7-git常用命令 1.秘钥配置 首先,要有ssh秘钥,在git命令行里面输入ssh keygen,如何一直next下去,找到你的用户所在位置有一个.ssh文件夹里,有两个文件id_rs ...

  8. ikea营销_用于企业的AI开发人员工具存在的问题(以及IKEA与之相关的问题)

    ikea营销 Over a year ago I shared my thoughts on why most startups that focused on deep learning tools ...

  9. 手把手教你搭建TestNg框架

    一.      前置准备 1.         获取项目git权限 2.         根据开发提供的项目git地址,进入git:新建属于自己的测试分支 备注:测试分支的名字自定义,此处定义为for ...

最新文章

  1. Windows 8.1内置微软五笔输入法
  2. Outlook 2003中各个数据存储和配置文件的存放位置
  3. 使用vue-cli快速构建项目--vue.js学习笔记1
  4. 利用JMF进行多媒体编程
  5. db2诊断系列之---定位锁等待问题
  6. Ubuntu 安装调整工具移动 Launcher 启动器位置
  7. linux从源码编译软件,linux软件源码的编译安装
  8. HTML黑客帝国代码雨
  9. 接口测试apipost
  10. 食品收银 食品收银系统 食品收银软件 食品收银软件排行榜
  11. python切片原理_彻底理解Python list切片原理
  12. 我的河海大学计算机考研经验之谈
  13. RuntimeError: generator raised StopIteration(python带我起飞报错)
  14. Cubic Curve
  15. java 级联删除_Mybatis 级联删除的实现
  16. wps打印缩放到一页_WPS文档过长时,如何在A4纸上完美打印
  17. SNMP MIB库的介绍
  18. 如何通过交互设计增强用户体验
  19. abaqus python_abaqus python脚本入门
  20. 二进制分析工具自动发现DLL劫持漏洞

热门文章

  1. b. 《计算机软件保护条例》没有规定软件著作权人的改编权,自然人创作的享有著作权的计算机软件的权利保护期限为()。...
  2. Word另存为PDF时出现“错误!未找到引用源”的解决
  3. 基于阿里云的超级性能测试 亿级企业压力测试神器JMeter4.X实战 抗压神器JMeter课程
  4. mac m1 无法连接公司内网问题
  5. 缅怀钟扬教授,5分钟视频回顾伟大植物学家钟扬对人类的贡献
  6. 程序员的2023发展方向
  7. 17年1月9日,小程序来了。深度解析2017微信公开课
  8. 前端工程师成长之多看好书
  9. 文件10:文件路径-信息查询方法
  10. 一文详解高性能数据库:读写分离