zoukankan      html  css  js  c++  java
  • Git-06-本地与远程冲突

    git会在本地维护 origin/master分支,通过该分支 感知远程github的内容

    origin/master一般建议 不要修改,是一个只读分支

    我们可以用一个命令去感知本地仓库与远程仓库的差距(是否落后或先进):git remote show origin

     

     

     up to date表示本地仓库master分支与远程仓库保持一致。

     

     

    本地与远程冲突

    假如有2个本地仓库,一个是mygit01  , 另一个是mygit02,它们关联的是同一个远程仓库。

    刚开始时,它们的commit链的最新节点都是 58f5448

    然后mygit01修改了a.txt文件,提交然后push到远程。

    此时mygit01和远程仓库的commit链都是 58f5448 -> 241644f

    然后mygit02也修改了a.txt文件,然后commit。

    此时mygit02的commit链是 58f5448 -> 1e7bdlaf

    然后在push的时候就是失败,因为冲突了。官方建议(也是解决办法)是:

    1.git pull(拉取远程代码,pull 就是 fetch + merge)

    2.然后自己修改冲突的文件 (这一步你会看到冲突的文件是怎样的,你甚至可以不修改冲突文件的,但逻辑上我们肯定要修改)

    3.commit (在这一步git会认为你已经解决好冲突了)

    4.push

    就会成功。

     

    失败的示例:

     

    mygit02修改冲突后,查看commit链,发现变成了 58f544 -> 241644f -> le7bdlaf -> 13e5f48 (13e5f48是我们解决冲突时的commit节点,也就是解决冲突的第三步生成的commit节点

    所以git 解决冲突的逻辑是:把远程的commit链放在前面,自己的commit链放在后面,使之合成一条链来解决。

    冲突的本质是两个仓库处于不同的commit链,因为无法确定要以那条链为基准,所以无法合并。

     

  • 相关阅读:
    联合省选 2021 B 卷题解
    近期省选题思路整理
    Codeforces 1492E Almost Fault-Tolerant Database
    Codeforces 1486F Pairs of Paths
    给nginx全自动添加ssl证书以及自动续签
    宝塔面板如何用uwsgi与nginx快速部署Django项目
    solidity代币实例详解
    metaMask官方文档
    PostgreSQL windows创建用户
    odoo centos 安装odoo14
  • 原文地址:https://www.cnblogs.com/kenLoong/p/15228953.html
Copyright © 2011-2022 走看看