• git文件冲突合并的报错:Your local changes to the following files would be overwritten by merge


    记录一下在项目里使用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

  • 相关阅读:
    Xamarin.Forms之Resx
    Xamarin.Forms之OnElementPropertyChanged那些事
    Xamarin.Android之Application的使用
    Xamarin.Forms之FluentValidation(Model验证)
    Xamarin.Forms如何为View添加背景色
    odoo server命令行以及配置文件
    ODOO的命令行调用以及config默认值
    发掘odoo.cli.server.Server的秘密,OpenERP的第三根线头儿
    odoo.cli.main()做了什么?
    odoo.cli.main()指的是哪里?OpenERP的第二根线头儿
  • 原文地址:https://www.cnblogs.com/bobo1/p/12201156.html
Copyright © 2020-2023  润新知