1.操作步骤需要严格执行如下顺序:commit->pull->push

2.commit:将代码提交到本地仓库。

3.pull:将远程仓库代码同步到本地仓库。如遇冲突,解决冲突,重复commit->pull,直到没有冲突。

4.push:将本地仓库代码提交到远程仓库。

具体讨论如下:

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

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

  3. 本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支, 如果是 tag 的话可以分离出独立的仓库

  4. 肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地的这几个 commit 和远程的 commit 有冲突的部分就merge,然后根据提交时间排序再新建一个merge 的 commit 记录再怼上去

  5. 这个先 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 的时候 B 分支上会产生一个 merge_commit 的信息,这个时候 B 是合并状态而 A 未合并状态,如果现在没有发生任何改动执行 B->A 就直接切换过去了,连 merge_commit 都不会生成了

比如你从一个git log1,2,3,4,5,6的远程库拉取到了本地,
另一个同事也拉取了同样的代码,而且你的同事先于你提交到远程了,
此时远程的版本是1,2,3,4,5,6,7_new,8_new,
而你当前只是本地的版本1,2,3,4,5,6,7_local,8_local,9_local
从这里你就能看出你前一部分和远程的一样,后一部分和远程的不一样,
这个时候你不能正常推送上去的,如果你采取git push origin master --force
那么远程的版本就变成了1,2,3,4,5,6,7_local,8_local,9_local
之前你同事推送的7_new,8_new这两次推送被覆盖了,这不是大家想要的情况
因此需要git pull来将本地的版本合并成这样1,2,3,4,5,6,7_new,7_local,8_local,8_new,9_local,10_commit_merge
远程和本地的排序是按当时 commit 的时间来排的,最后一个10_commit_merge就是你本地远程合并的标志,最后你推送到远程仓库的应该也是这个,
因为你们操作的是同一个库始终要保持代码的同步,所以一旦版本库发生改动同一分支下的所有人都要跟着去同步他,因为各开发各的直接往上推 git 还没智能到帮你处理冲突的地步

Git commit/pull/push的操作步骤相关推荐

  1. git commit之后后面的操作步骤

    git commit后面的操作步骤 1 按下小写字母i,会进入编辑模式.输入你想要的 message 2 按下esc退出编辑模式 3 按下英文输入法下的冒号 4 再输入wq,就可以保存退出了,w是wr ...

  2. Git 一次性 pull push 所有的分支

    Git 一次性 pull push 所有的分支 /*************************************************************************** ...

  3. 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作...

    实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一个Python数据分析开发环境的Dock ...

  4. git撤回已经commit未push的操作

    一.使用IntelliJ idea VSC => Git => reset head => 退回到上次commit => 退回到第2次提交之前 => 退回到指定commi ...

  5. git commit撤销_Git 实用操作:撤销 Commit 提交

    有的时候,改完代码提交 commit 后发现写得实在太烂了,连自己的都看不下去,与其修改它还不如丢弃重写.怎么操作呢? 使用 reset 撤销 如果是最近提交的 commit 要丢弃重写可以用 res ...

  6. IDEA使用(03)_git撤回(已经commit未push的)操作

    1.问题来源 日常工作中会遇到 commit 到本地仓库的代码,因为一些原因,需要撤销后再提交到本地,或者需要整合多次 commit,然后 push 到远程仓库. 2.IDEA解决方案 I.在idea ...

  7. Git 提交报错,账户和密码错误 和 git add/git commit 文件太大太多

    问题1: Git 提交报错,账户和密码错误 重新使用git进行作业提交 问题2: 源码太大文件太多,失败 git add . git commit idea push操作 问题3:git push 报 ...

  8. 如何规范你的Git commit?

    简介:commit message应该如何写才更清晰明了?团队开发中有没有遇到过让人头疼的git commit?本文分享在git commit规范建设上的实践,规定了commit message的格式 ...

  9. Git commit hook 规范标准配置

    Git每次提交代码都需要写commit message,否则就不允许提交.一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作--但是在日常开发中,大家的commi ...

最新文章

  1. TestInside640-801 v11(神州testv11)题库视频讲解(全部上传完毕)
  2. 如何得到长整数逆序后的整数
  3. Py与Py3的区别之输入input()函数
  4. 08-Elasticsearch的配置(1)
  5. web端怎么做兼容性测试
  6. SpringBoot异步任务, 以及带返回值的异步任务(@Async 不起作用的原因)
  7. 海外并购频频被阻 中国芯发展之路困难重重
  8. 稳压二极管(齐纳Zener二极管)的接法和应用详解
  9. 零基础如何学习java?
  10. wxpython使用_wxpython的demo使用
  11. 手机游戏创业者的苦涩:成功率被指0.1%
  12. vue 获取HTML源码
  13. 性别检测识别、年龄检测识别
  14. 已经过去2周了,你感觉怎么样?
  15. md5编码java_MD5编码工具类 MD5Code.java
  16. 如何批量给pdf文件命名?
  17. 判断苹果手机系统版本 判断手机浏览器信息
  18. Ubuntu20.04 tcp调试工具mNetAssist安装
  19. C++ day24 继承(四)抽象基类,纯虚函数,protected
  20. 找不到战网服务器ip地址,《冰封王座》战网服务器IP地址大全

热门文章

  1. c语言冒泡例子,C语言排序实例(选择、冒泡、插入、折半、快速)
  2. 随想录(用python开发网站)
  3. 计算机课的情感目标是什么意思,教案中情感目标是什么.doc
  4. 华南师范大学计算机学院重修,选修课挂科有什么影响 还需要重修吗
  5. java 房贷计算器_求一房贷计算器java源程序
  6. a标签隐藏真实地址_推荐软件:Clover(窗口标签化工具)
  7. canvas 绘制直线 并选中_javascript自学记录:canvas绘图
  8. java使用初始化输入参数_使用初始化参数配置java web应用程序
  9. opencv 纸箱分割_OpenCV与AIPCV库——学习笔记(一)
  10. 获取计算机主机mac地址的命令有,怎么获取计算机的MAC地址和IP地址?