Git程序员

Mac下git使用以及遇到的一些问题

2019-04-10  本文已影响45人  半亩房顶

前言

最近换工作,需要重新装一波环境,一共整理了三篇文章以作记录,本文为其一,gitlab(git)篇

目的(本文涉及内容)

步骤 && 问题

1、mac 下 git 使用

问题1:git使用 和 不安装xcode安装命令行工具

初次运行git命令,可能会遇到active developer path(xxx) does not exist的错误,其实这个提示下面已经给出了问题解决方式

use `xcode-select --switch path/to/Xcode.app` 
to specify the Xcode that you wish to use for command line 
developer tools (or see `man xcode-select`)

意思是,使用git需要命令行工具,而xcode中是包含这个工具的,有的搜到的文章就会告诉我们安装xcode来解决这个问题,其实没有必要,只需要使用下面的命令即可,会有弹窗,不过看清文字就好了

xcode-select --install

2、gitlab 简介

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。安装方法是参考GitLab在GitHub上的Wiki页面。(转自百度百科)

3、使用git ssh方式获取项目

gitlab注册之类的肯定不用说的,一般也就是用的公司给分配好的账号,
下面主要说下项目的下载(clone),有http 和 ssh两种形式的链接,http形式一般没什么问题,而ssh形式则有坑
首先说一下ssh方式的配置

ssh方式的配置
    $ git config --global user.name "xxx"
    $ git config --global user.email "xxx@xx.xx"
    $ ssh-keygen -t rsa -C "xxx@xx.xx"

连续3个回车。如果不需要密码的话。
最后得到了两个文件:id_rsaid_rsa.pub

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"

添加生成的 SSH key 到 ssh-agent。

    $ ssh-add ~/.ssh/id_rsa

如此之后,执行ssh方式的 clone,依然失败,于是,这里是问题2

问题2:无法使用ssh方式下载项目

如下是问题文本

Cloning into 'XXX'...
Unable to negotiate with xxx.xxx.xxx.xxx port 22: no matching host key type found. Their offer: ssh-dss
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

项目并不存在是一定的,看来主要就是access rights的问题了
no matching host key type found. Their offer: ssh-dss,这个提示其实给出了答案了,服务器的key没有匹配到,但是他们提供了ssh-dss。

这个链接中是来自Stack Overflow的解决方案:
https://stackoverflow.com/questions/34208495/unable-to-negotiate-with-xx-xxx-xx-xx-no-matching-host-key-type-found-their-of

我来翻译下就是,现在的openssh默认是拒绝DSA验证的。DSA是什么呢,简单来说,DSA是一种签名与验证的算法,和大家熟悉的RSA加密解密过程相反,在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性。DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多。这也就决定了它不够安全,被拒绝也是可以理解,那么,如何解决?

有两个解决方法

Host your-remote-host
# 为了方便可以直接使用 Host * 
HostkeyAlgorithms +ssh-dss
GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-dss" git clone git@git.xxx.com:xxx/xxx.git

我选用的是第一种方式,然后担心会对其他ssh有影响,所以用自己的个人服务器验证了下 ssh root@xxx.xxx.xxx.xxx,没有问题,开心完结此问题。

4、问题3:git 常用命令

总结

git命令在之前的工作中并没有用过,只是自己玩过,所以还是有很多需要学习的,尤其对于一些高敏感操作,删除,合并等,切记需要谨慎小心。加油!

参考文章

https://blog.csdn.net/xunxianren007/article/details/54021499
https://blog.csdn.net/maindek/article/details/53893718
https://www.cnblogs.com/ldq2016/p/7418206.html
https://stackoverflow.com/questions/34208495/unable-to-negotiate-with-xx-xxx-xx-xx-no-matching-host-key-type-found-their-of
https://blog.csdn.net/LuckyStar_D/article/details/51319136
https://blog.csdn.net/yinqiangqiang/article/details/79000459
https://blog.csdn.net/ppby2002/article/details/38456045
https://blog.csdn.net/gzyzwx/article/details/81234993
https://www.cnblogs.com/ShaYeBlog/p/5576601.html


欢迎大家关注我的公众号


半亩房顶
上一篇下一篇

猜你喜欢

热点阅读