zoukankan      html  css  js  c++  java
  • Git冲突解决

    Git冲突解决

    2018.12.08 19:17:18字数 678阅读 7,307
    导语
    • 只要面试官问一些GIt相关问题,是辨别真假程序员的有效手段之一,GIt提交、拉取、分支、冲突解决是在多人协作当中经常遇到的问题,不可能没有遇到!在多人协作开发项目的时候,不可避免的会遇到代码冲突,虽说我们每次再开发以前要拉取代码,但是冲突还是不能彻底避免,这个时候就需要我们的小伙伴熟练掌握解决冲突的技能显得尤为重要。
    产生冲突的场景
    • 一大早同事A来到办公室,打开电脑启动环境执行git pull(拉取代码,修改代码之前一定要先拉取养成良好的习惯,尽可能的减少代码冲突),开始修改项目的首页的Bug,啪啪啪...
    • 一会儿同事B气喘吁吁的坐下来,同样的开机启动环境git pull,然后同样去修改首页的Bug,啪啪啪...
    • 看似风平浪静,但是掐指一算,一会儿即将可能有大事要发生,等待中...
    • 同事A事先修改完了Bug,git push到了远程服务器,然后继续去修改其它Bug,同事B也修改完了,执行了git push,然后高高兴兴去厕所了,回来以后一看小黑窗:


       
    报.......错......了.......
    • 推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突不要慌,解决办法我给大家介绍两种,酌情选择
    解决方案一(强制覆盖本地代码,你自己修改的代码即将被远程库的代码所覆盖)
    • 把你修改的代码进行备份,然后执行命令:
    1. git reset --hard origin/master
    2. git pull
    3. 从你备份好的文件当中把你写的代码拿过去,修改完成再进行git push
    解决方案二
    • (合并远程库和你本地的代码)执行命令:
      1. git fetch 更新远程仓库文件
      2. git diff master origin/master 本地文件和远程仓库文件进行对比
      3. git merge origin/master 自动合并
      4. 根据需求手动删除不必要的代码,修改完成git push到远程仓库
        1. git reset 使用及回滚
          原创AI小兵 最后发布于2018-09-21 09:37:26 阅读数 14312 收藏
          展开
          目录

          一、git reset 参数

          1. --soft  

          2.  --mixed  

          3.  --hard  

          二、 如何回滚文件

          1. 修改完,还未执行git add 

          2.使用git add 提交到暂存区,还未commit之前

          3.已经git commit,还未git push

          4.已经git push  

          一、git reset 参数
           

          1. --soft  
          仅仅移动当前Head指针,不会改变工作区和暂存区的内容  


          2.  --mixed  
          是reset的默认参数,移动head指针,改变暂存区内容,但不会改变工作区 


          3.  --hard  
          当前head指针、工作区和暂存区内容全部改变  


          那我个人的理解,--soft用处不是很多,当commit之后想撤回commit,但还不想覆盖工作区内容时,使用--mixed;当想完全回滚时,使用--hard来覆盖工作区。

          二、 如何回滚文件
          1. 修改完,还未执行git add 
          git checkout .
          使用暂存区的文件覆盖工作区,所以执行完git add .之后,再执行该命令是无效的  
          git checkout .和git add .是一对反义词

          2.使用git add 提交到暂存区,还未commit之前
          git reset  先用Head指针覆盖当前的暂存区内容
          git checkout . 再用暂存区内容覆盖工作区内容
          或者使用
           

          git reset --hard 直接使用head覆盖当前暂存区和工作区
          3.已经git commit,还未git push
          git reset --hard origin/master
           从远程仓库把代码取回来,然后覆盖本地仓库、本地暂存区和工作区  

          或者使用

          git reset --hard last_commit_id
            覆盖本地仓库、暂存区和工作区,其中查看last_commit_id命令为

          git log
            或者使用

          git reset --mixed last_commit_id  
          覆盖本地的暂存区,再执行
           

          git checkout . 覆盖本地工作区
          4.已经git push  

            那就没办法了

          实际经常使用的情况有两种
          1. 修改错了,完全覆盖掉,使用
           

          git reset --hard commit_id
          2. 错误的把大文件添加到了缓存区,使用

          git reset
          撤回添加
           
          ————————————————
          版权声明:本文为CSDN博主「AI小兵」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
          原文链接:https://blog.csdn.net/edric1261234/article/details/82796506

  • 相关阅读:
    Linux系统下安装rz/sz命令及使用说明
    Linux 下Beanstalk安装
    Jetty中间件
    JBOSS应用中间件
    IBM 存储高可用HA解决方案和DR连续性解决方案
    Nginx负载均衡与反向代理的配置和优化
    NFS挂载网络存储
    使用集中式身份管理服务详解
    配置链路聚合(端口聚合)
    配置ssh远程访问策略
  • 原文地址:https://www.cnblogs.com/flintlovesam/p/12449700.html
Copyright © 2011-2022 走看看