Git总结(二)

Git遇坑总结

Posted by Anriku on February 13, 2018

话说吃一堑长一智。在实战的旅程中总是不平坦,遇到各式各样的坑。在今天的博客中我想总结一下Git中所遇到的坑。避免没记录后面又踩进去。说到这里,我想把邓爷爷的一句话送给大家“实际是检验真理的唯一标准”,看书是要有的,但是实际更加重要。纸上谈兵是不行滴,有些东西做了才知道!

SSH未配置问题

报错情况分析

既然这是在说SSH那么咱们肯定要知道SSH到底是什么。阮一峰解释得很好了,我就不重复了。在看之前还不知道公钥和私钥如何实现加密解密和数字验证的童鞋可以看看这里

如果没有设置SSH在下面两种情况下会遇到问题:(没有配置SSH当然还有其它情况也会遇到这样的问题就不一一列举了PS:我们远程Github上有一个仓库)

通过git clone <用SSH方式获取的仓库地址>,效果图如下:

clone with ssh

当你在本地建了一个仓库并与你远程建的仓库通过git remote add origin <用SSH方式获取的仓库地址>建立了联系的时候要从远程库拉取上面的东西的时候,会发现下面的情况:

git pull

咱们好好看一下其中的报错,是不是一样的,没花眼就是一样的!大概就是说没有权限或者是仓库压根就没有,没有的情况我们可以否定掉,因为我们Github的远程库是已经建了。这里我得吐槽一下这报错,emmm…说什么没权限呢?直接说未配置SSH多明了的。没错这里的报错是说没有配置SSH

SSH的配置

想要具体了解Github上SSH的相关东西可以去这里看

现在我们看具体的配置步骤:

  • 先到.ssh目录下去。Mac~/.ssh下;WindowsC:\Users\[YOUR-USER-NAME]\.ssh\下。
  • 先看看目录下有没有id_rsa(私钥)id_rsa.pub(公钥)这两个文件。
  • 没有的话通过ssh-keygen -t rsa -C "your_email@example.com"这个命令来进行公钥和私钥的生成。生成过程中有下图的样子:
    • 第一个是保存key的位置我们已经到了需要存放的地方直接回车就行。
    • 第二个和第三个重复两次输入你为公钥和私钥设置的口令。不用设置可以直接回车

ssh_gen

接下来在.ssh所在位置就有id_rsaid_rsa.pub两个文件了。

下面我高兴地打开浏览器进入你的Github并依次进行下面的操作:

  • 点击Settings进入设置
  • 点击SSH and GPG keys进入SSHkeys的设置
  • 点击New SSH key
  • Title随便设置,key设置id_rsa.pub的内容。也就是把公钥给Github。
  • 接下来再进行上面的操作没有问题了

#当本地已经建好仓库并进行了提交后要与远程的仓库建立连接的坑(虽然不常见但还是记录一下吧)

  • 首先,我们在本地建了一个文件夹
  • 进入其中通过git init使其加入git进行管理
  • 进行一些修改并进行了提交。
  • 通过git remote add origin <用SSH表示的地址>
  • 我们先拉取远程库的文件下来用git pull origin master拉取主分支的文件。当当当,马上有下面的报错:

git pull

  • 我们看最后一句报错,大概就是说这是一个很严重的问题因为你想要合并连个没有共同祖先的分支。
  • 但是我们就是想把上面的内容拉取下来并与本地建立联系怎么办。
  • 通过git pull --allow-unrelated-histories origin master 进行拉取就行
  • 然后我们通过git log --graph会看到两个从未有个关系的分支走到了一起

unrelated_histories

总结

  • 今天杂杂的说了Git中两个遇到的大问题,没有遇到过的童鞋可能不是很清楚。不过没关系。我希望这篇博客大家对SSH不理解的,对公钥和密钥不理解的能通过下面我给的博客链接学习一下。

博客参考

博客转载请注明链接