情况是这样的,现在远程有一个仓库,分支就一个,是master。然后我本地的仓库是从远程的master上clone下来的。大家都是clone下来,再在自己本地改好,再commit然后pull然后push,大家都是这么做的。那么现在问题来了:

1,那我本地这个也算是个分支?还是就是一个本地仓库?

答:本地和远程的关系相当于两个分支,你感觉一样是因为你git pull 的时候已经自动给绑定好对应关系了, set-upstream..balbala

2,如果我在远程新建了个分支,然后我pull了下来,那我本地到底有分支这个说法吗?我本地的分支是不是就是那个远程新建的分支?

答:你远程新建了一个分支拉到本地的道理是一样的,属于复制了一份,但是本地分支和远程分支已经是两个东西了

3,本地仓库和本地分支有什么区别?

答:本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支

4,commit是提交到本地仓库,然后push,这个push是把所有代码推到远程仓库,还是只是把commit的地方推到远程仓库?

答:肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地分支的最新版本和远程的 commit 有冲突,就需要解决冲突。

5,那为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?

答:这个先 commit 再 pull 最后再push 的情况就是为了应对多人合并开发的情况,

  1. commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;

  2. pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉

  3. 出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的

6,两个分支A和B,A合并B和B合并A,有区别吗?

答:两个互相合并的唯一区别就是 A->B 的时候 B 分支上会产生一个 merge_commit ,被改变的分支是 B ;如果现在没有发生任何改动执行 B->A ,则A和B两分支才会完全相同。

转载于:https://www.cnblogs.com/leiblog/p/11138497.html

【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?...相关推荐

  1. Git 版本控制之 GitFlow

    来源:  http://t.cn/EbZKx96 最近在着手制定开发规范,想要把项目正规高效的跑起来.计划引入 Git 版本控制,Git-Flow 便成为了首选.因为之前并没有过多接触,所以先花些时间 ...

  2. 非程序员如何使用 Git——版本控制你的生活

    在协同工作和版本控制方面,Git 绝对是一个优秀的工具,但其优点并不被大众所熟知.在过去的几年中,由于大众对于文字处理,电子表格(译者注:这里暗指Word和Excel,下同.)以及其他常用的功能的需求 ...

  3. git修改服务器的命令行,Git版本控制工具安装及命令行操作

    很多小伙伴不知道如何来安装Git版本控制工具,对于命令操作比较陌生.本文做了一个详细的文档,希望对大家有所帮助. 1.git 是什么一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制 ...

  4. R语言 - RStudio使用Git版本控制

    目录 1. 配置Git环境 2. RStudio的Git操作 2.1 初始化(仅一次操作) 2.2 Push推送新增修改(多次操作) 2.3 Pull拉取仓库最新(多次操作) 1. 配置Git环境 别 ...

  5. Git——版本控制为王

         前言 单枪匹马,独闯天下的时代已经过去,团队,组织间的协同开发已然成为了主流.那么如何最大化的加快开发时间?如何确保个体差异性得以解决不冲突?svn,git等一系列版本控制软件应运而生,其中 ...

  6. idea通过Git版本控制时贮藏功能的使用

    目录:   更新代码前的贮藏   切换分支前的贮藏 前因: 当我参与的项目使用的时Git版本控制工具时,总会出现以下问题: 1.本地部分代码是个人配置,不方便提交到本地库.但是每次git pull 都 ...

  7. Git版本控制__分支管理

    文章目录 Git基本操作 1. git 两大特点 2. 安装与配置 3. 创建一个版本库 4.版本创建与回退 4.1 使用 4.2 工作区和版本库 工作区 ( Working Directory ) ...

  8. Git版本控制+ SourceTree+AndroidStudio 忽略文件

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在介绍Git 按本控制之前 下简单说一下版本控制系统的两种方式:集中式和分布式 集中式版本控制系统,版本库是集中存放在中 ...

  9. Git版本控制与工作流

     原文出处:刘耀柱(@Sam_Lau_Dev)   欢迎分享原创到伯乐头条 Git Version Control 这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对 ...

最新文章

  1. 四、CSS知识总结(下篇)
  2. Angular应用带参数的路由实现
  3. [css] 你有没有自己写过一套UI库?说下遇到哪些难点?
  4. stm32 SPI架构
  5. 2015计算机二级java真题_2015年计算机二级考试java试题
  6. ADI芯片的通用SPI接口设计
  7. tree(2018.10.26)
  8. 如何判断数组所有数都不等于一个数_工程师编程,C语言学习,关于数组方面的一些总结...
  9. Windows 10 IoT Core 17115 for Insider 版本更新
  10. Android 12中系统Wallpaper详解1--锁屏透看壁纸和桌面透看壁纸的切换
  11. GitHub桌面版汉化
  12. 电脑 u盘 正在计算机,优盘插在电脑上一直显示正在扫描优盘怎么回事
  13. 动力节点『lol版』Java学习路线图(四)Javaweb阶段
  14. Kubernetes微服务入门教程:部署spring-boot应用
  15. 汇总:web前端优化网页加载速度
  16. js如何判断Object是否为空?
  17. 鸿蒙如何用JS开发智能手表App
  18. 数学家的情书-笛卡尔的心型线方程
  19. Android9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
  20. python 训练识别验证码_用Python机器学习搞定验证码

热门文章

  1. 通过Exchange online实现HAB功能
  2. 物联网配云计算 两情相悦还是单相思?
  3. oracle中类似indexof用法_instr函数
  4. linux病毒sfewfesfs
  5. Windows 7使用wubi硬盘安装Ubuntu (文字版)
  6. AgileEAS.NET平台开发实例-开发环境配置
  7. 我国有线电视信源编码现有体制和对高清的制约
  8. 将地址转换为链接的正则表达式(regex url href)
  9. KVM虚拟化环境搭建
  10. 2019年值得关注的八大DevOps趋势