zoukankan      html  css  js  c++  java
  • 记Git报错-refusing to merge unrelated histories

    记Git报错-refusing to merge unrelated histories

    系统:win7 
    git版本: 2.16.2.windows.1

    问题

    1、本地初始化了git仓库,放了一些文件进去并进行了add操作和commit提交操作;

    $git add -A
    $git commit -m "start 2018-06-06"
    • 1
    • 2

    2、github创建了git仓库并建立了README文件;

    Github创建远程仓库

    3、本地仓库添加了github上的git仓库作为远程仓库,起名origin;

    $git remote add origin https://github.com/tielemao/TielemaoMarkdown
    • 1

    /GitAddRemote

    4、问题来了,本地仓库在想做同步远程仓库到本地为之后本地仓库推送到远程仓库做准备时报错了,错误如下:

    fatal: refusing to merge unrelated histories 
    (拒绝合并不相关的历史)

    解决

    出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。

    查阅了一下资料,发现可以在pull命令后紧接着使用--allow-unrelated-history选项来解决问题(该选项可以合并两个独立启动仓库的历史)。

    命令:

    $git pull origin master –allow-unrelated-histories
    • 1

    以上是将远程仓库的文件拉取到本地仓库了。 
    紧接着将本地仓库的提交推送到远程github仓库上,使用的命令是:

    $ git push <远程主机名> <本地分支名>:<远程分支名>
    也就是
    $git push origin master:master
    提交成功。
    • 1
    • 2
    • 3
    • 4

    GitPushRemote

    pull

    git pull 命令基本上就是 git fetch 和 git merge 命令的组合体,Git 从指定的远程仓库中抓取内容,然后马上尝试将其合并进你所在的分支中。

    从远程仓库中获得数据,可以执行:

    $ git fetch [remote-name]
    • 1

    这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

    但是注意的是 git fetch 并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

    如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。

    由于fetch命令后还要再做一步merge命令的操作,所以使用 git pull 命令来自动的抓取然后合并远程分支到当前分支。 (相当于一次执行fetch加merge命令)这可能会是一个更简单或更舒服的工作流程。

  • 相关阅读:
    Linux编程make命令(转)
    如何处理Global symbol * requires explicit package name编译错误,以及use strict用法
    6235与旧版本的区别
    Linux下动态链接库的使用
    MTK Socket学习——HTTP请求
    指针和指针的引用
    VC/MFC Combo Box控件的用法
    makefile教程
    常用数据类型使用转换详解
    Linux发送与接收信息
  • 原文地址:https://www.cnblogs.com/brady-wang/p/10476489.html
Copyright © 2011-2022 走看看