一般的操作流程

1.pull

王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服务器上了。

王小坤一直在做设备驱动的相关工作,昨天也刚刚修改了driver.c文件中的几个函数,加班太晚就只是commit了一下,没push到服务器。今天早上听说张大炮已经把数据库读写的api改了,那么现在王小坤直接推到服务器,是推送不上去的,因为张大炮修改的那部分代码王小坤本地并没有,而王小坤本地修改的driver.c服务器的仓库也没有,所有王小坤必须先从服务器上最新版本的代码下载到自己本地的方库中,合并两人的代码才能push到服务器。于是执行下面的命令:

  1. git pull

2.merge

pull命令是下载与合并的双重含义。如果没什么问题会自动合并,然而,事情没这么简单:

  1. remote: Enumerating objects: , done.
  2. remote: Counting objects: % (/), done.
  3. remote: Compressing objects: % (/), done.
  4. remote: Total (delta ), reused (delta )
  5. Unpacking objects: % (/), done.
  6. From https://gitee.com/feipeng8848/Demo
  7. 35da8e7..43f4744 master -> origin/master
  8. Auto-merging Main.c
  9. CONFLICT (content): Merge conflict in Main.c
  10. Automatic merge failed; fix conflicts and then commit the result.

由于王小坤本地的代码还是老版本的read(),所以与张大炮最新的代码对比是同一文件的同一处修改,git会提示自动merge失败(上面是pull命令执行之后的提示,最后一行提示自动合并失败),因为有冲突,git没法确定到底用哪一个,这就需要手动merge。由于王小坤已经按照Git学习笔记---(2)在本地配置了kdiff3软件,那这样就方便多了,直接输入

  1. git mergetool

自动打开kdiff3手动合并有冲突的文件。关于kdiff3的一些基本操作请看上一章:Git学习笔记---(2)

当然,合并到这里并没有结束,因为万恶的张大炮竟然觉得read()看起来不如Read()舒服,就把read()改成Read(),这可苦了王小坤,所有之前调用read()的地方都要改成Read()才不会导致系统出问题。

3.commit

当王小坤做完了所有的合并工作之后执行了下面的语句看看git是什么进度了

  1. On branch master
  2. Your branch and 'origin/master' have diverged,
  3. and have and different commits each, respectively.
  4. (use "git pull" to merge the remote branch into yours)
  5.  
  6. All conflicts fixed but you are still merging.
  7. (use "git commit" to conclude merge)
  8.  
  9. Changes to be committed:
  10.  
  11. add file: serialport.c

很好,合并之后git都自动给add到暂存库(stage或index)中了。然后commit一下,commit的说明就写“合并张大炮对read函数的修改”,这个时候王小坤昨晚的commit和张大炮昨天的所有的commit就都合并在一起了。

4.push

最后push到服务器上去。

  1. git push origin master

张大炮此时想要最新的代码只需要再pull一下就可以了。

Git学习笔记---协作的一般流程的更多相关文章

  1. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  2. GIT学习笔记(2):时光机穿梭与远程仓库

    GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 1.GIT如何跟踪修改 在我们修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制.我们前面举的例子是这样 ...

  3. Pro Git 学习笔记

    Pro Git 学习笔记 文档地址:Pro Git原文地址:PRO GIT 学习笔记 git常见命令 1.Git起步 初次运行Git前的配置 用户信息 git config --global user ...

  4. Git学习笔记 (二)

    Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...

  5. Git学习笔记(二) · 非典型性程序猿

    远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...

  6. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  7. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  8. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  9. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

随机推荐

  1. Django MTV模式详解

      出自:http://blog.csdn.net/dbanote/article/details/11338953 在正式开始coding之前,我觉得有必要探讨下Django的MTV模式,理论和实践 ...

  2. SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

    实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每 ...

  3. 《大话设计模式》c++实现 原型模式

    意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 主要解决:在运行期建立和删除原型. 何时使用: 1.当一个系统应该独立于它的产品创建,构成和表示时. 2.当要实例化的类是在运行 ...

  4. html5-css列表和表格

    td{    /*width: 150px;    height: 60px;*/    padding: 10px;    text-align: center;} table{     width ...

  5. Spark学习之路 (十五)SparkCore的源码解读(一)启动脚本

    一.启动脚本分析 独立部署模式下,主要由master和slaves组成,master可以利用zk实现高可用性,其driver,work,app等信息可以持久化到zk上:slaves由一台至多台主机构成 ...

  6. flask 单个页面多个表单(单视图处理、多视图处理)

    单个页面多个表单 除了在单个表单上实现多个提交按钮,有时还需要在单个页面上创建多个表单.比如,在程序的主页上同时添加登录和注册表单.当在同一个页面上添加多个表单时,我们需要解决的问题是在视图函数中判断 ...

  7. svnrdump:E175000:SSL is not supported错误的解决

    参考博客:https://www.cnblogs.com/jkko123/p/6358461.html 参考博客:https://blog.csdn.net/w171066/article/detai ...

  8. WebStorm: The Smartest JavaScript IDE by JetBrains

    WebStorm: The Smartest JavaScript IDE by JetBrains https://www.jetbrains.com/webstorm/?fromMenu

  9. 大数据学习路线:Zookeeper集群管理与选举

    大数据技术的学习,逐渐成为很多程序员的必修课,因为趋势也是因为自己的职业生涯.在各个技术社区分享交流成为很多人学习的方式,今天很荣幸给我们分享一些大数据基础知识,大家可以一起学习! 1.集群机器监控 ...

  10. 配置方案:Redis持久化RDB和AOF

    Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...