zoukankan      html  css  js  c++  java
  • Git

    场景

    我在本地有个代码仓库local-A,本地仓库local-A已经和一个远程仓库remote-A关联了。

    接着我又在GitHub上新建了一个仓库remote-B,我希望将本地仓库local-A的本地dev分支push到这个新建的远程库remote-B。我的想法是这样的:

    1. 在本地仓库local-A里添加刚刚新建的远程库remote-B
    2. 检出(check out)并切换到remote-B的master分支
    3. 将本地dev分支merge到当前的master分支
    4. 解决可能发生的冲突后,将改动全部commit并push到远程库remote-B的master分支上

    接着当我做到第三步的时候,发现报错如下:

    Merge: refusing to merge unrelated histories
    

    看到报错,我又重新操作了一遍,依然是同样的错误。记得以前我也做过类似的操作,但是却没有现在的问题,百度了下,发现可能是git升级之后造成的。

    解决方案

    因为两个仓库是不同的项目(本地仓库已经跟踪了另外一个远程库了),git默认不允许不相干的项目进行push等操作。如果想要进行这些操作,就需要加入--allow-unrelated-histories参数才可以合并两个不同的项目:

    git merge --squash dev --allow-unrelated-histories
    

    这句命令表示将dev分支合并到当前分支,这里的两个本地分支各自追踪不同的远程库,需要加入--allow-unrelated-histories参数才能够完成合并操作而不报错,至于--squash参数是为了压缩dev分支原本的commit历史,可以将原本所有的commit历史合成一个commit,以避免当前分支在合并之后掺入了其他项目的commit历史。

    参考链接

  • 相关阅读:
    BZOJ2243: [SDOI2011]染色
    BZOJ1036: [ZJOI2008]树的统计Count
    转自 x_x_的百度空间 搞ACM的你伤不起
    wcf test client
    wcf test client
    log4net编译后命名空间找不到的问题
    log4net编译后命名空间找不到的问题
    Hive Getting Started
    Hive Getting Started
    刚听完CSDN总裁蒋涛先生的学术报告
  • 原文地址:https://www.cnblogs.com/yulinlewis/p/9866006.html
Copyright © 2011-2022 走看看