Git应用—05Git文件冲突合并的几种情况(转载)
git文件冲突合并的几种情况
https://xieye.iteye.com/blog/2433229
本文描述了git冲突的几种常见情况和解决方案,老鸟请直接忽略本文。
假设冲突文件是 test/TestCase.php
下面分5种情况讨论。
1、本地不变。
然后远程别人有更新。
git pull
这种最简单,没有冲突,本地工作区直接更新
2、我本地修改,但是不add。
然后远程别人有更新,此时 :
git pull,
git会告诉你:
error: Your local changes to the following files would be overwritten by merge:
tests/TestCase.php
此时,我
git checkout -- tests/TestCase.php
千万注意,上条命令会导致你自己的修改丢失了!!
然后git pull.成功。
这种情况下,你自己的修改完全丢失。本地接受了远程的修改。
3、我本地修改,但是已经add了。
然后别人远程更新,
git pull
这种情况,和上面几乎一样。
git reset HEAD test/TestCase.php
上面这条命令可以理解为add命令的逆命令。即,取消add操作。
然后继续
git checkout -- tests/TestCase.php
千万注意,上条命令会导致你自己的修改丢失了!!
然后git pull.成功。
这种情况下,你自己的修改完全丢失。 本地接受了远程的修改。
4、我本地修改,add 且 commit了
然后别人远程更新,
git pull
注意:这种情况和第2,第3种情况不同。git会认为你的commit也很重要。同等重要。
突然发现,自动进入vi界面。
Merge branch 'master' of https://github.com/xxxx
这什么意思呢?就是git会主动再帮你添加一个commit。
先让你写点注释,并且它已经帮你写了几句话
那自己写点东西,然后保存退出vi
请注意,这个commit是在本地的,还没有发到远程。
这个commit会自动合并 你添加到代码,和 别人远程更新的代码,
所以,之后请自己检查一下这个代码有无问题。
如果都没有问题,则你现在
git push
这个命令可以把你的本地改动推送到远程。
push之后,远程得到你和他人的所有更新。push之前,仅本地得到你和他人的所有更新。
5、使用分支功能。
git的分支功能很强大,应该多使用。
上面几种情况都没有使用分支。使用分支会更好。
1)首先,我本地新建并切换分支branch_1,自己起有意义名字,并修改文件。
git checkout -b branch_1
vi test/TestCase.php
git add tests/TestCase.php
git commit -m "change test"
2)现在,别人已经更新了远程主分支代码(没更新就极其方便了,也不必说了,快速更新)
我想把分支合并到主分支。
我应该,先回到主分支,并更新。
git checkout master
git pull
3)然后,在本地,把我的修改分支合并上去。
git merge branch_1
自动进入vi界面,让你写注释。
然后会合并好。
4)类似提示:
tests/TestCase.php | 3 ++-
上面,两个加号表示文件增加了两行,一个减号表示文件减少了一行。
此时,注意,凡是进入vi界面后,
最好自己再检查一下程序,检查那些被提示修改过的文件,(这是一个好习惯,但我从来不遵守)
如果认为正确,最后,
5) git push,推送到远程。
push之后,远程得到你和他人的所有更新。push之前,仅本地得到你和他人的所有更新。
==========
总结,大部分情况下,都推荐使用第5种,使用分支的方法,来管理文件修改冲突。
-----------------------------------------------------------------------------------------------------------------------------------
Git fetch和git pull的区别:
都可以从远程获取最新版本到本地
1.Git fetch:只是从远程获取最新版本到本地,不会merge(合并)
$:git fetch origin master //从远程的origin的master主分支上获取最新版本到origin/master分支上
$:git log -p master..origin/master //比较本地的master分支和origin/master分支的区别
$:git merge origin/master //合并
2.Git fetch:从远程获取最新版本并merge(合并)到本地
$:git pull origin master //相当于进行了 git fetch 和 git merge两部操作
实际工作中,可能git fetch更好一些, 因为在merge前,可以根据实际情况决定是否merge
再说导致报错:error: You have not concluded your merge (MERGE_HEAD exists).的原因可能是在以前pull下来的代码自动合并失败
解决办法一:保留本地的更改,中止合并->重新合并->重新拉取
$:git merge --abort
$:git reset --merge
$:git pull
解决办法二:舍弃本地代码,远端版本覆盖本地版本(慎重)
$:git fetch --all
$:git reset --hard origin/master
$:git fetch
Git应用—05Git文件冲突合并的几种情况(转载)的更多相关文章
- CSS外边距合并的几种情况
CSS外边距合并的几种情况 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 外边距在CSS1中就有 The width ...
- git文件冲突合并的报错:Your local changes to the following files would be overwritten by merge
记录一下在项目里使用git遇到代码冲突时的解决方法 问题:当我和我同事两个人改了相同的一个文件,他在我提交前提交了,这时候我就提交不了了,并且也pull不下来他的代码 会报错: Your local ...
- Eclipse SVN文件冲突及不能直接提交情况
下图为Eclipse SVN使用过程中存在文件冲突的情形. 以下是三种冲突情形及相应解决办法: 1.简单的文件版本冲突 情形:A改变了文件的头部,B改变了文件的尾部,如果两者改动互不影响,SVN可以智 ...
- git 入门教程之冲突合并
如果足够幸运的话,团队成员互不影响,彼此相安无事,大家各自基于 master 分支的某个 commit 创建自己的分支,平时在分支上独立工作,等到一段时间后再合并 merge 到 master 分支, ...
- git恢复误删除文件
在git仓库管理下误删除文件一般会分为以下3种情况: 1.手动直接删掉,如选择-右击-删除 这种删除未修改本地仓库[版本库],只修改了工作区,直接git checkout -- fileName即可恢 ...
- Git文件冲突的常用解决方法
在提交代码时,偶尔会有文件冲突的情况,当出现: Please, commit your changes or stash them before you can merge. 提示后,可用依次输入下列 ...
- git入门五(分支合并冲突和衍合)
分支合并冲突的处理 合并分支的冲突时在不同的分支中修改了同一个文件的同一部分,程序无法把两份有差异的文件合并,这时候需要人为的干预解决冲突.当前处于master 分支,当dev 分支和master ...
- svn 出现冲突时可以使用 meld . 命令合并。 而git的冲突合并详见内容
1.可以在任意目录使用 git mergetool --tool-help 查看 git 所支持的merge tools. 2.可以使用如下配置去设置merge tool 和 diff tool ...
- git命令行解决冲突文件步骤
原文https://blog.csdn.net/zwl18210851801/article/details/79106448 亲测有用,解决git冲突的好办法 方法一(推荐使用): git pull ...
随机推荐
- JavaScript控制页码的显示与隐藏
前端页面开发分页显示功能时,一般都要求使用自定义的页码样式,直接用网上分页插件就比较麻烦了,这里记录一下工作中总结的一个比较简单通用的控制页码显示与隐藏的的js代码. 首先是使用时需要自己根据自己具体 ...
- docker系统学习之docker界面管理
docker可视化界面 dockerUI已废弃,转投Portainer项目 Portainer,轻量级管理界面,基本满足中小单位需求 官方Github https://github.com/porta ...
- 撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。
一.撰写一篇博客要求讲述四则运算2的设计思想,源程序代码.运行结果截图.编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志. 1.设计思想: ①创建test.jsp建立第一个前端界面,提 ...
- 一个隐蔽的C语言问题反思
今天在编译一个C代码的时候,从别的编译ok的头文件中拷贝了一份在上面做修改,没想到修改好之后一直 无法调用这个头文件中的函数和变量.看了好久,才在预编译宏中找到了问题的根源.代码 如下所示: 头文件A ...
- 机器学习基石笔记:08 Noise and Error
噪声:误标.对同一数据点的标注不一致.数据点信息不准确...... 噪声是针对整个输入空间的. 存在噪声的情况下,VC bound依旧有用: 存在噪声,就是f------>p(y|x),f是p的 ...
- XyTalk企业即时通讯IM开始开源
网址: https://gitee.com/475660/xyTalk-pc https://github.com/xy-Group/xyTalk-pc Xy.Platform是一个高性能.可扩展的企 ...
- 【xsy1300】 原题的旅行 最短路+倍增
题目大意:有一个$n$个点,$m$条边的无向图,玩家走过第$i$条边,血槽中的血会下降$v_i$点,如果不足$v_i$点,这人会当场去世. 这$n$个点中,有若干个是关键点,在这些关键点可以将血槽补满 ...
- Excel透视技巧-三级分类统计名单、分类统计数据
Excel透视技巧-三级分类统计名单.分类统计数据 基础数据 透视表1--三级分类统计名单 透视表2-分类统计数据
- Gradle中使用SpringBoot插件构建多模块遇到的问题
通常下,多模块的项目如下: Root project 'demospring' +--- Project ':model' \--- Project ':rest' 那么我们需要在rest模块依赖mo ...
- SQL Server性能优化(14)索引碎片
一. 外部碎片和内部碎片的概念 碎片的概念和检测,参考MSDN:https://msdn.microsoft.com/zh-cn/library/ms189858.aspx 二.对于碎片的解决办法 解 ...