博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git 实践之冲突管理
阅读量:5974 次
发布时间:2019-06-19

本文共 1407 字,大约阅读时间需要 4 分钟。

hot3.png

冲突的类型和原因   

  当两个人在同一个文件的同一行做了修改,或者当一个人将一个文件删除,恰好另外一个人试图修改这个文件的时候就会发生冲突。 也就是说冲突产生的条件是同一文件,并且如果不设计删除文件的情况下,冲突的条件可以缩小到 同一文件同一行。

如何较少冲突

知道冲突产生的原因和类型了,我们可以考虑下,怎么才能减少冲突呢?

1. 根据功能划分feature分支 

开发功能,分功能开发的时候。要根据功能划分不同的分支。 比如要开发两个功能,一个是功能A,一个是功能B。 那么我们需要checkout 两个分支  分别是 feat/A  和 feat/B 。 这样的好处是只需要最终上线的时候合并一次,解决一次冲突即可。

2. 组件和模块划分粒度。

如果组件和模块划分粒度比较大,大家修改同一个组件或者同一个模块代码的可能性就会降低,因此冲突概率会下降。

3. 开发之前的沟通

动手开发之前,要先理清思路。 比如开发的影响范围有多大,大概要怎么去做。不仅可以降低开发中遇到大问题返工的风险,而且在一定程度上降低了冲突的可能。

处理冲突的正确步骤:

如果是更改了同一行代码:

# 切换到需要处理冲突的目录cd ~./your-project# 查看冲突文件git status# 编辑器中打开,大家也可以设置git merge tool 为自己喜欢的编辑器# 比如 git merge.tool xxxxxcode filename1.jsorgit mergetool# 大家会看到下面的这种的,就是冲突的地方其他功能代码<<<<<<< HEAD功能A代码  // 这中间的是当前工作区的代码=======功能B代码  // 这中间的是合并的分支代码>>>>>>> feat/B // 这个是具体合并的分支名字# 这个时候,需要叫上开发功能B的人,一起来帮助你解决冲突# 保留一方或者保留双方# 解决完成后git add . git commit -m 'Resolved merge conflict by incorporating both features'

如果是尝试修改删除了的文件:

# 切换到需要处理冲突的目录cd ~./your-project# 查看冲突文件git status# 将文件加回来(谁让你删了??)git add README.mdgit commit -m 'Resolved merge conflict by keeping README.md file.'# 将文件删除(谁让你改了??)git rm README.mdgit commit -m 'Resolved merge conflict by removing README.md file.'

 

心态也很重要

你应该始终牢记,你可以在任何时间执行撤销操作,并返回到你开始合并之前的状态。要对自己有信心,你不会破坏项目中的任何东西。只要在命令行界面中键入 “git merge --abort” 命令,你的合并操作就会被安全的撤销。

当你解决完冲突,并且在合并完成后发现一个错误,你仍然还是有机会来简单地撤销它。你只须要键入 “git reset --hard ” 命令,系统就会回滚到那个合并开始前的状态,然后重新开始吧!

转载于:https://my.oschina.net/wanjubang/blog/1502709

你可能感兴趣的文章
漫谈几种反编译对抗技术
查看>>
VS 编译错误
查看>>
Timer 和 TimerTask 例子
查看>>
Spring BOOT 集成 RabbitMq 实战操作(一)
查看>>
安装python3.5注意事项及相关命令
查看>>
进程通信之无名信号量
查看>>
并发串行调用接口
查看>>
C# 视频监控系列 序 [完]
查看>>
Mongodb3.0.5副本集搭建及spring和java连接副本集配置
查看>>
FileStream大文件复制
查看>>
TDD 的本质不是 TDD
查看>>
linux命令学习——ps
查看>>
freemark 判断list是否为空
查看>>
JS的一些扩展:String、StringBuilder、Uri
查看>>
solr的suggest模块
查看>>
2PHP页面缓存
查看>>
编译原理 LL1文法First集算法实现
查看>>
菜鸟学Linux命令:bg fg jobs命令 任务管理
查看>>
【Linux系统编程】 Linux系统调用概述
查看>>
SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏
查看>>