美文网首页Git程序员
Mac下git使用以及遇到的一些问题

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

作者: 半亩房顶 | 来源:发表于2019-04-10 14:23 被阅读45次

    前言

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

    目的(本文涉及内容)

    • mac 下 git 使用(问题1)
    • gitlab 简介
    • 使用git ssh方式获取项目(问题2)
    • git常用命令(问题3)

    步骤 && 问题

    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方式的配置
    • (1)、设置Git的user name和email:(如果是第一次的话)
        $ git config --global user.name "xxx"
        $ git config --global user.email "xxx@xx.xx"
    
    • (2)、生成密钥
        $ ssh-keygen -t rsa -C "xxx@xx.xx"
    

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

    • (3)、添加密钥到ssh-agent
      确保 ssh-agent 是可用的。ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。
        # start the ssh-agent in the background
        $ eval "$(ssh-agent -s)"
    

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

        $ ssh-add ~/.ssh/id_rsa
    
    • (4)、登陆Github, 添加 ssh 。
      id_rsa.pub文件里的内容复制到ssh key中。

    如此之后,执行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要快很多。这也就决定了它不够安全,被拒绝也是可以理解,那么,如何解决?

    有两个解决方法

    • 其一,在~/.ssh/config文件中添加下面的代码,文件不存在就新建一个,主要是制定ssh链接时候使用的host key算法。
    Host your-remote-host
    # 为了方便可以直接使用 Host * 
    HostkeyAlgorithms +ssh-dss
    
    • 其二,通过如下方式,在每次使用ssh方式clone项目时制定算法
    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 init 本地仓库分为:暂缓区 和 master分支
    • 将本地代码添加到暂缓区 git add .
    • 将暂缓区代码提交到master分支 git commit
    • 给本地代码仓库和远程代码仓库添加关联 ,查看关联 git remote
      添加关联:git remote add origin xxxurl
    • 将本地代码上传到远程代码仓库 git push origin master
    • 给本地代码打个标签 git tag -a ‘0.0.1’ -m ‘标签描述’
      将本地标签推送到远程代码仓库 git push --tags
    • 删除本地标签/删除远程标签 git tag -d 0.0.1 / git push origin --delete 0.0.1
    • 精准拉取指定的某一个版本git fetch origin tag V1.2
    • 查看代码状态 ,红色表示在工作区间,绿色表示在暂缓区git status
    • 查看分支 git branch;我想列出所有分支,并且在后边列出分支的最后提交内容git branch -av;创建分支git branch 分支1;切换分支git checkout 分支1;分支比较git diff master 分支1;分支合并,首先换回主分支git merge 分支1;删除分支git branch -d 分支1
    • 我想比较工作区与暂存区的差异直接使用git diff就可以了,此处会列举出所有的不同;假设我们只想看某个文件,工作区与暂存区的差异;直接使用 git diff -- 文件名

    总结

    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


    欢迎大家关注我的公众号


    半亩房顶

    相关文章

      网友评论

        本文标题:Mac下git使用以及遇到的一些问题

        本文链接:https://www.haomeiwen.com/subject/ishbiqtx.html