Git冲突分析和处理
来源:互联网 发布:sql查询在哪 编辑:程序博客网 时间:2024/06/05 00:41
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://oldratlee.com/post/2013-02-17/git-conflict
一同事使用git pull
冲突了,并且之前本地有未提交的修改。
问题变得比较复杂,因为涉及4方面:
- 工作目录的修改
- 暂存区的修改
- merge来的修改
- Merge前的修改
解决方法:
使用git merge --abort
中止merge。merge manual中说,这条命令会尽力恢复到Merge之前的状态(可能失败!)。
merge manual中有一条警告:
Warning: Running git merge with uncommitted changes is discouraged: while possible, it leaves you in a state that is hard to back out of in the case of a conflict.
上面的内容就是说:有未提交修改情况下,不要执行merge!遵守这条警告,防患于未然是最好。
遵守这条警告(或说是最佳实践)后,就只有两方面:
- merge来的修改
- Merge前的修改
关于这种情况下的冲突解决,《Git权限指南》一书中有比较系统的说明。
这条警告说得更通用些,就是
有未提交修改情况下,不要执行可能会冲突的操作!
哪些操作会导致冲突呢?
冲突的来源
很多命令都可能出现冲突。但冲突的直接来源是merge
和patch
(应用补丁)。其它的命令是执行这两个操作导致冲突。
rebase
:重新设置基准,然后应用补丁。pull
:会自动mergerepo sync
:会自动rebase
cherry-pick
:会应用补丁- ……
最佳实践
在执行可能有冲突的操作前,先查看一下 暂存区 和 工作目录,保证其中没有修改。
比如使用git stash
就可以把暂存区 和 工作目录的修改保存起来,让暂存区 和 工作目录处于干净的状态。
遗留的的问题
如果上面最佳实践是合理的,那么应该加上Hook
,在执行在执行可能有冲突的操作时,检查是否有没提交的修改。如果有,则给出警告终止操作!
参考资料
- Git下的冲突解决
这篇博文给出了“冲突来源”的说明,并简单说了冲突的处理。 - 我的一条讨论Git冲突的微博 http://weibo.com/1836334682/zgQ3y5AzK
- Git冲突分析和处理
- git 的分支处理和冲突解决
- git pull和本地文件冲突处理
- git svn处理冲突
- 处理git pull 冲突
- Git 冲突处理
- git 冲突处理
- eclipse git处理冲突
- git冲突处理
- eclipse处理git冲突
- git冲突处理
- Git的用法-Git常用命令-Git冲突处理-Git提交和下载-Git与Github
- Git冲突和解决冲突
- git冲突时的处理
- git项目(提交-处理-冲突)
- git pull和本地文件冲突
- Git冲突处理的一些经验
- git---分支合并冲突处理(conflict)
- Eclipse中使用svn
- [置顶] Linux搭建使用SSH共享存取的 Git Server
- RMQ(Range Minimum/Maximum Query)问题
- 笔记《版本控制之道--使用Git》
- JAVA统一路径名格式代码
- Git冲突分析和处理
- 自己的小项目-WEB服务器IP统计
- 微软:中国59%电脑销售前已感染恶软
- C++选择排序法(Selection Sort)
- sugarnms智和EPON网管系统
- Fragment继承类的简单解析
- linux基本命令收藏
- Eclipse中使用Struts2和Tomcat访问Hbase数据库
- 腾讯实习生面试后的一些感悟