zoukankan      html  css  js  c++  java
  • Git本地分支版本号过低导致的push错误 error: failed to push some refs to ... 及兴许amend

     今天在用git的时候遇到了一个问题。在想远程分支push的时候,出现了以下的错误:

    ! [remote rejected] master -> refs/for/master (change 144 closed)

    error: failed to push some refs to ...

    检查了一下发现是由于本地分支的版本号相比远程分支的版本号低。

    解决的过程中有例如以下问题:

    1、(不建议使用)直接在当前分支pull了一下,合并的时候发现有冲突,解决后commit --amend出错,大意是“合并中不能amend”。

    2、新建了一个分支new用于保存当前的工作。回master分支,使用git reset --hard ****(****是commit_id前四位)命令回滚到之前的commit状态,保证这个commit节点在远程分支上,而不是本地的未push的commit。然后pull能够非常顺利的将本地master分支更新与远程分支一致。然后在合并new分支到master分支,这样就回到了1的情况,合并后不能amend。

    (之所以用2的方法,是由于这样就有了一个备份,在合并的假设出现故障导致一些丢失也能够轻松找回。)


    上面2个方法amend都会报错,可是新建一个commit的话就能顺利完毕合并。

    事实上合并的过程中假设没有冲突会自己主动创建新的commit,自己主动加入的描写叙述是  merge branch ‘...’  。可是出现冲突的话就会停下来,由我们自己来解决冲突后,手动add->commit新建节点,这是默认的描写叙述还是是  merge branch ‘...’  。


    之所以一直尝试amend是由于工作的须要。可是还没有一个好的解决方法,依据合并的原理来看应该是不可能去amend了。

    可是git提供了第二种方式:衍合rebase。

    在new分支下,git rebase master就能够进行衍合,衍合后在master分支最未端就会出现new分支下的commit,这样就能保证push的commit的changeid是不变的。

    上面的衍合是基于没有冲突的情况的,有冲突的情况还待实验。


  • 相关阅读:
    基于 Web 的 Go 语言 IDE
    基于 Web 的 Go 语言 IDE
    语音芯片选型
    干簧管
    51单片机或PLC驱动3.5寸至52寸的数字TFTLCD屏、VGA接口显示器、电视机
    为什么做网线水晶头必须按照颜色顺序?
    51地图接口
    labview多个并行循环同时退出
    TCP和UDP的区别
    IMAQ Flatten Image to String VI的参数设置对比
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3896890.html
Copyright © 2011-2022 走看看