git报错及解决

问题1

报错信息
1
fatal: refusing to merge unrelated histories
出错原因
1、在g本地使用git init创建了仓库;
1
2
3
$ mkdir Demo
$ cd Demo
$ git init
2、在github上创建了远程仓库;

image-20200315235534737

3、本地仓库添加了文件;
4、提交代码;
1
2
$ git add ./
$ git commit -m "message"
5、为本地仓库添加git仓库作为远程仓库;
1
git remote add origin https://github.com/username/Demo
6、pull远程仓库到本地(可能创建仓库时创建了readme文件。需要同步,再push)
1
git pull origin master

报错:fatal: refusing to merge unrelated histories

这个报错信息翻译为:拒绝合并不相关的历史

主要原因是本地仓库和远程仓库都是独立创建的。是彼此独立的仓库。所以拉取时要将远程的文件和本地的文件合并,就会出现这个问题。

7、解决办法
  1. 使用git clone直接拉取远程代码。
1
$ git clone https://github.com/username/Demo

这时,在本地已经有了相应的仓库,且远程和本地仓库是建立了连接的。自然就不会出现这个问题。

  1. pull时加上--allow-unrelated-histories
1
git pull orinin master --allow-unrelated-histories

该选项可以合并两个独立仓库的历史。

问题 2

将本地仓库和远程仓库退回到指定版本:

1
git reset --hard [指定的提交版本sha1值]

执行完命令后你会发现你的本地已经回退到指定的版本了,如果你是想远程仓库也回退,可以将本次执行结果强制推送到远程仓库。

1
git push -f -u origin master