【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?...
情况是这样的,现在远程有一个仓库,分支就一个,是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 的情况就是为了应对多人合并开发的情况,
commit
是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;pull
是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在git add && git commit && git pull
这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉出现代码覆盖或者丢失的情况:比如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?...相关推荐
- Git 版本控制之 GitFlow
来源: http://t.cn/EbZKx96 最近在着手制定开发规范,想要把项目正规高效的跑起来.计划引入 Git 版本控制,Git-Flow 便成为了首选.因为之前并没有过多接触,所以先花些时间 ...
- 非程序员如何使用 Git——版本控制你的生活
在协同工作和版本控制方面,Git 绝对是一个优秀的工具,但其优点并不被大众所熟知.在过去的几年中,由于大众对于文字处理,电子表格(译者注:这里暗指Word和Excel,下同.)以及其他常用的功能的需求 ...
- git修改服务器的命令行,Git版本控制工具安装及命令行操作
很多小伙伴不知道如何来安装Git版本控制工具,对于命令操作比较陌生.本文做了一个详细的文档,希望对大家有所帮助. 1.git 是什么一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制 ...
- R语言 - RStudio使用Git版本控制
目录 1. 配置Git环境 2. RStudio的Git操作 2.1 初始化(仅一次操作) 2.2 Push推送新增修改(多次操作) 2.3 Pull拉取仓库最新(多次操作) 1. 配置Git环境 别 ...
- Git——版本控制为王
前言 单枪匹马,独闯天下的时代已经过去,团队,组织间的协同开发已然成为了主流.那么如何最大化的加快开发时间?如何确保个体差异性得以解决不冲突?svn,git等一系列版本控制软件应运而生,其中 ...
- idea通过Git版本控制时贮藏功能的使用
目录: 更新代码前的贮藏 切换分支前的贮藏 前因: 当我参与的项目使用的时Git版本控制工具时,总会出现以下问题: 1.本地部分代码是个人配置,不方便提交到本地库.但是每次git pull 都 ...
- Git版本控制__分支管理
文章目录 Git基本操作 1. git 两大特点 2. 安装与配置 3. 创建一个版本库 4.版本创建与回退 4.1 使用 4.2 工作区和版本库 工作区 ( Working Directory ) ...
- Git版本控制+ SourceTree+AndroidStudio 忽略文件
2019独角兽企业重金招聘Python工程师标准>>> 前言 在介绍Git 按本控制之前 下简单说一下版本控制系统的两种方式:集中式和分布式 集中式版本控制系统,版本库是集中存放在中 ...
- Git版本控制与工作流
原文出处:刘耀柱(@Sam_Lau_Dev) 欢迎分享原创到伯乐头条 Git Version Control 这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对 ...
最新文章
- 四、CSS知识总结(下篇)
- Angular应用带参数的路由实现
- [css] 你有没有自己写过一套UI库?说下遇到哪些难点?
- stm32 SPI架构
- 2015计算机二级java真题_2015年计算机二级考试java试题
- ADI芯片的通用SPI接口设计
- tree(2018.10.26)
- 如何判断数组所有数都不等于一个数_工程师编程,C语言学习,关于数组方面的一些总结...
- Windows 10 IoT Core 17115 for Insider 版本更新
- Android 12中系统Wallpaper详解1--锁屏透看壁纸和桌面透看壁纸的切换
- GitHub桌面版汉化
- 电脑 u盘 正在计算机,优盘插在电脑上一直显示正在扫描优盘怎么回事
- 动力节点『lol版』Java学习路线图(四)Javaweb阶段
- Kubernetes微服务入门教程:部署spring-boot应用
- 汇总:web前端优化网页加载速度
- js如何判断Object是否为空?
- 鸿蒙如何用JS开发智能手表App
- 数学家的情书-笛卡尔的心型线方程
- Android9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
- python 训练识别验证码_用Python机器学习搞定验证码