Git学习笔记---协作的一般流程
一般的操作流程
1.pull
A与另一个同事B一起开发一个项目,B昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服务器上了。
A一直在做设备驱动的相关工作,昨天也刚刚修改了driver.c文件中的几个函数,加班太晚就只是commit了一下,没push到服务器。今天早上听说B已经把数据库读写的api改了,那么现在A直接推到服务器,是推送不上去的,因为B修改的那部分代码A本地并没有,而A本地修改的driver.c服务器的仓库也没有,所有A必须先从服务器上最新版本的代码下载到自己本地的方库中,合并两人的代码才能push到服务器。于是执行下面的命令:
git pull
2.merge
pull命令是下载与合并的双重含义。如果没什么问题会自动合并,然而,事情没这么简单:
remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From https://gitee.com/feipeng8848/Demo 35da8e7..43f4744 master -> origin/master Auto-merging Main.c CONFLICT (content): Merge conflict in Main.c Automatic merge failed; fix conflicts and then commit the result.
由于A本地的代码还是老版本的read(),所以与B最新的代码对比是同一文件的同一处修改,git会提示自动merge失败(上面是pull命令执行之后的提示,最后一行提示自动合并失败),因为有冲突,git没法确定到底用哪一个,这就需要手动merge。由于A已经按照Git学习笔记---(2)在本地配置了kdiff3软件,那这样就方便多了,直接输入
git mergetool
自动打开kdiff3手动合并有冲突的文件。关于kdiff3的一些基本操作请看上一章:Git学习笔记---(2)
当然,合并到这里并没有结束,因为万恶的B竟然觉得read()看起来不如Read()舒服,就把read()改成Read(),这可苦了A,所有之前调用read()的地方都要改成Read()才不会导致系统出问题。
3.commit
当A做完了所有的合并工作之后执行了下面的语句看看git是什么进度了
On branch master Your branch and 'origin/master' have diverged, and have 1 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours) All conflicts fixed but you are still merging. (use "git commit" to conclude merge) Changes to be committed: add file: serialport.c
很好,合并之后git都自动给add到暂存库(stage或index)中了。然后commit一下,commit的说明就写“合并B对read函数的修改”,这个时候A昨晚的commit和B昨天的所有的commit就都合并在一起了。
4.push
最后push到服务器上去。
git push origin master
B此时想要最新的代码只需要再pull一下就可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现