记录一下在项目里使用git遇到代码冲突时的解决方法

问题:当我和我同事两个人改了相同的一个文件,他在我提交前提交了,这时候我就提交不了了,并且也pull不下来他的代码

会报错:

Your local changes to the following files would be overwritten by merge:

解决方法一:git checkout还原然后再pull(就是覆盖更新的意思)

解决方法二:先add 再commit 最后pull 就会在本地合并你的代码,最后检查没问题再push

------------------------------------------------------------------------------------------------------------------------

下面是搜到的一篇比较详细的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的分支功能很强大,应该多使用。 
  上面几种情况都没有使用分支。使用分支会更好。 
  首先,我本地新建并切换分支branch_1,自己起有意义名字,并修改文件。 
  git checkout -b branch_1 
    
  vi test/TestCase.php 
  git add tests/TestCase.php 
  git commit -m "change test" 
  
  现在,别人已经更新了远程主分支代码(没更新就极其方便了,也不必说了,快速更新) 
  我想把分支合并到主分支。 
  我应该,先回到主分支,并更新。 
  git  checkout master 
  git pull 
  
  然后,在本地,把我的修改分支合并上去。 
  git merge branch_1 
  自动进入vi界面,让你写注释。 
  
  然后会合并好。 
  类似提示: 
  tests/TestCase.php | 3 ++- 
  上面,两个加号表示文件增加了两行,一个减号表示文件减少了一行。 
  
  此时,注意,凡是进入vi界面后, 
  最好自己再检查一下程序,检查那些被提示修改过的文件,(这是一个好习惯,但我从来不遵守) 
  如果认为正确,最后, 
  git push,推送到远程。 
  
  push之后,远程得到你和他人的所有更新。push之前,仅本地得到你和他人的所有更新。

========== 
总结,大部分情况下,都推荐使用第5种,使用分支的方法,来管理文件修改冲突。

转自:https://www.iteye.com/blog/xieye-2433229

git文件冲突合并的报错:Your local changes to the following files would be overwritten by merge的更多相关文章

  1. 【Git】pull遇到错误:error: Your local changes to the following files would be overwritten by merge:

    这种情况下,如何保留本地的修改同时又把远程的合并过来呢? 首先取决于你是否想要保存本地修改.(是 /否) 是 git stash git pull origin master git stash po ...

  2. Git出现error: Your local changes to the following files would be overwritten by merge: ... Please, commit your changes or stash them before you can merge.的问题解决(Git代码冲突)

    在使用git pull拉取服务器最新版本时,如果出现error: Your local changes to the following files would be overwritten by m ...

  3. Laravel 5.2--git冲突error: Your local changes to the following files would be overwritten by merge:

    今天在服务器上git pull是出现以下错误: error: Your local changes to the following files would be overwritten by mer ...

  4. 解决git pull出现: Your local changes to the following files would be overwritten by merge: ...的问题

    今天在服务器上git pull是出现以下错误: error: Your local changes to the following files would be overwritten by mer ...

  5. git error: Your local changes to the following files would be overwritten by merge:xxxxxx ,Please commit your changes or stash them before you merge.的phpstorm解决办法

    git报错 error: Your local changes to the following files would be overwritten by merge: .idea/encoding ...

  6. "Your local changes to the following files would be overwritten by merge" on git

    运行: git merge --ff origin/master 得到错误信息: error: Your local changes to the following files would be o ...

  7. Git版本控制工具使用:Error pulling origin: error: Your local changes to the following files would be overwritten by merge

    摘自: CSDN 逆觞 git在pull时,出现这种错误的时候,可能很多人进进行stash,相关stash的请看:Error pulling origin: error: Your local cha ...

  8. git pull 提示错误,Your local changes to the following files would be overwritten by merge

    error: Your local changes to the following files would be overwritten by merge: Please commit your c ...

  9. git pull的时候发生冲突的解决方法之“error: Your local changes to the following files would be overwritten by merge”

    今天在使用git pull 命令的时候发生了以下报错 目前git的报错提示已经相关友好了,可以直观的发现,这里可以通过commit的方式解决这个冲突问题,但还是想看看其他大佬是怎么解决这类问题的 在网 ...

随机推荐

  1. java9循环结构进阶

    public class jh_01_循环嵌套 { public static void main(String[] args) { // for(int i = 1;i<= 5;i++) { ...

  2. python练习——第4题

    原GitHub地址:https://github.com/Yixiaohan/show-me-the-code 题目:任一个英文的纯文本文件,统计其中的单词出现的个数. 代码: import coll ...

  3. 使用 GitHub Actions 实现 Hexo 博客自动部署

    一.Hexo 相关知识点 静态博客简单,但是发布博文时稍显麻烦,一般需要下面两步: hexo clean hexo g -d // 相当于 hexo g + hexo d 如果考虑到同步源文件,还需要 ...

  4. D语言-随机数游戏

    由于不会D语言的随机数,干脆core.stdc.stdlib调用stdlib.h 这里mark一下,类型转换是cast(D语言类型) NULL不能用,要用null import std.stdio; ...

  5. error C2338: No Q_OBJECT in the class with the signal (NodeCreator.cpp)

    在Qt中,当派生类需要用到信号与槽机制时,有两个要求. 1.该类派生自QObject类. 2.类中有Q_OBJECT宏. 本次报错的原因就是因为没有在类中添加Q_OBJECT宏. 而我的出错原因更傻逼 ...

  6. Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间

    1.引言在实际开发中,每条数据的创建时间和修改时间,尽量不需要应用程序去记录,而由数据库获取当前时间自动记录创建时间,获取当前时间自动记录修改时间. 2.创建语句(1)–添加CreateTime 设置 ...

  7. 使用Java实现三个线程交替打印0-74

    使用Java实现三个线程交替打印0-74 题目分析 三个线程交替打印,即3个线程是按顺序执行的.一个线程执行完之后,唤醒下一个线程,然后阻塞,等待被该线程的上一个线程唤醒.执行的顺序是一个环装的队列 ...

  8. PHP5.3的VC9、VC6、Thread Safe、Non Thread Safe的区别

    PHP一共给了四个版本,VC9 x86 Non Thread Safe.VC9 x86 Thread Safe.VC6 x86 Non Thread Safe.VC6 x86 Thread Safe, ...

  9. Time-Frequency Networks For Audio Super-Resolution

    论文题目:2018_用于音频超分辨率的时频网络 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12345950.html 摘要 音频超分辨率(即带 ...

  10. ELF文件之六——使用链接脚本-2个函数-data-bss-temp

    main.c int enable; ; int main() { int temp; ; } int add() { ; } elf反汇编结果如下,可以看出main函数中的栈多开了8字节,虽然局部变 ...