1、简介

Git是一个开源的分布式版本控制系统,能用于快速高效地处理任何或小或大的项目,它是Linus Torvalds为了帮助管理Linux内核开发而开发的一个源码开放的版本控制软件。

2、Linux平台安装git

Git的工作需要调用curl、zlib、openssl等库,因此在安装git之前需要安装这些依赖库,在Linux系统上使用apt-get或yum命令进行安装。

(1)命令行安装

首先安装库依赖:

$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

然后继续安装git:

$ sudo apt-get install git

安装完成后查看git的版本号:

$ git --version

如下正常显示出版本号,则git安装完成:

(2)源码安装

我们也可以通过Git的源码进行安装,先去Git官网下载最新版本源码,链接如下:

https://git-scm.com/download

解压并安装下载的源码包:

$ mv git-2.23..tar.gz ~/github/
$ cd ~/github/
$ tar -zxvf git-2.23..tar.gz
$ cd git-2.23./
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

测试是否已经安装完成:

$ git --version

运行结果如下所示则安装完成:

3、初次使用配置git

一般在新的系统上,都需要先配置下自己的Git的工作环境,Git提供了一个叫做git config的工具,专门用来配置和读取相应的工作环境变量,这些环境变量决定了Git在各个环节的具体工作方式和行为,这些变量可以存放在以下三个不同的地方:

a)/etc/gitconfig文件:系统中对所有用户都普遍适用的配置,若使用git config时用--system选项,读写的就是这个文件。

b)~/.gitconfig文件:用户目录下的配置文件只适用于当前用户,若使用git config时用--global选项,读写的就是这个文件。

c)当前项目的git目录中的配置文件(工作目录中的.git/config文件):这里的配置仅仅对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config里的配置会覆盖/etc/gitconfig中的同名变量。

(1)用户信息配置

用户信息是第一个需要配置的,包括个人的用户名和电子邮件地址,每次git提交时都会引用这两条信息:

$ git config --global user.name “xxx”
$ git config --global user.email “xxx@example.com”

使用--global选项,那么更改的配置文件就是位于当前用户的主目录下(~/.gitconfig文件),以后所有的项目都会默认使用这里配置的用户信息,如果想要在某个特定的项目使用其他名字和邮箱,将--global选项去掉,然后重新配置即可,新的配置将保存到当前项目的.git/config文件中。

(2)文本编辑器

Git需要用户输入一些额外信息的时候,会自动调用一个外部文本编辑器,默认会使用操作系统指定的默认编辑器,这个编辑器也可以自行设置:

$ git config --global core.editor vim

(3)差异分析工具

设置解决合并冲突时使用哪种差异分析工具,比如改用vimdiff的话:

$ git config --global merge.tool vimdiff

(4)查看配置信息

配置完成后,如果想查看已有的配置信息,可以使用下面命令:

$ git config --list

有时候可能会看到重复的变量名,这说明它们来自不同的配置文件(例如/etc/gitconfig和~/.gitconfig),不过Git最终采用的是最后一个。

另外,还可以直接查看某个环境变量的设定,将特别的名字加上即可:

$ git config user.name

4、git-ssh的配置和使用

(1)为什么需要配置公钥和私钥

Git使用https协议时,每次pull或push都需要输入密码,提交代码时相当麻烦,使用git协议,然后使用SSH密钥,可以实现免密登录。SSH是加密传输的,Git可使用RSA加密传输算法,RSA要解决的一个核心问题是,如何使用一对特定的数字,使其中的一个数字可以用来加密,而另外一个数字可以用来解密,这两个数字就是使用Git时遇到的public key(公钥)和private key(私钥),例如:从github发过来的是用公钥加密过的数据,可以使用本地的私钥来进行还原。

(2)检查SSH密钥是否存在

打开终端,输入下面的命令检查是否存在现有的SSH密钥:

$ ls -al ~/.ssh

检查目录列表是否已经有SSH公钥,默认情况下,检查是否有以下文件:

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

如果接收到错误提醒”~/.ssh不存在”,可以使用命令行生成SSH密钥。

(3)生成SSH密钥

在终端下运行下面命令:

$ ssh-keygen -t rsa -b  -C "xxx@example.com"

运行上面命令时,会提醒用户输入一个名字来保存内容,不用管,直接回车,然后会提醒用户输入SSH密钥管理密码,输入相应的密码或者直接回车都可以,最后,公钥和私钥会生成并保存到~/.ssh目录下,可以使用ls命令进行查看。

(4)添加SSH密钥到ssh-agent

ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,其实就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其它程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程:

启动ssh-agent:

$ eval "$(ssh-agent -s)"

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

$ ssh-add ~/.ssh/id_rsa

(5)添加SSH公钥到github账号下

在终端下运行命令:

$ cat ~/.ssh/id_rsa.pub

然后将输出的内容进行复制,复制完成后,按下面步骤添加公钥到github下:

在任意页面的右上角,点击个人资料照片,然后点击Settings按钮如下:

在用户设置的侧边栏中,点击SSH and GPG keys按钮,如下:

 然后点击New SSH key去添加SSH密钥,如下:

按下图进行标签输入,SSH公钥复制粘贴,然后添加:

 最后提示需要输入账号的密码,直接输入即可完成SSH公钥添加:

(6)测试SSH连接

在终端下,输入下面命令:

$ ssh -T git@github.com

如果能看到自己的用户名,并提示已经成功授权,则SSH连接已经成功了,如下运行结果:

5、使用SSH URL克隆项目

登录到github账号查看仓库,可以使用SSH URL将项目clone到计算机上,如下:

 在终端上运行命令:

$ git clone git@github.com:Cqlismy/myGitTest.git

要使用SSH URL,必须在计算机上生成SSH密钥对,并将公钥添加到自己github账号,如上所介绍的如何生成SSH密钥和在Git中添加SSH密钥,当在命令行中使用SSH URL对远程仓库执行git clone、git fetch、git pull或者git push命令时,系统将不会再要求用户输入github账号用户名和密码。

6、git push提示输入用户名和密码

使用SSH协议对仓库进行管理能免密登录,但是,当某些仓库项目不属于SSH协议时,例如https协议,当使用git push推送代码到远程,就会提示输入github账号用户名和密码,如下:

下面给出一个Linux下的解决方法:

在用户根目录下~/创建文件.git-credentials,并打开编辑,输入内容:

$ cd ~/
$ touch .git-credentials
$ vim .git-credentials

添加下面内容:

https://username:password@github.com

然后执行命令添加配置:

$ git config --global credential.helper store

查看配置列表是否多了credential.helper变量:

$ git config --list

这时,再去执行git push将不再需要输入github账号的用户名和密码。

7、如何删除git

先找到git的安装位置:

$ which -a git

然后进入到git所在的目录:

$ cd /usr/local/bin/

将git进行删除:

$ sudo rm -rf git*

8、小结

本文主要简单介绍了git的安装以及git的一些基本配置,并简单介绍了如何在Git中添加SSH密钥的办法,并对在Linux下使用HTTPS协议管理远程仓库时git push提交代码需要输入github账号的用户名和密码的问题提出了一个解决方法。

参考:

https://blog.csdn.net/chinassj/article/details/80323641

https://www.runoob.com/git/git-tutorial.html

https://www.runoob.com/git/git-install-setup.html

http://iissnan.com/progit/html/zh/ch1_4.html

https://segmentfault.com/a/1190000002645623

https://segmentfault.com/q/1010000000118744

https://www.jianshu.com/p/e93edea128a3

最新文章

  1. [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]
  2. POJ2396 Budget
  3. C#开发中使用Npoi操作excel实例代码
  4. AOD.net
  5. 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!
  6. hust-1024-dance party(最大流--枚举,可行流判断)
  7. SYNATXAHIGHLIGHTER IN WLW HAS PROBLEMS
  8. JDK源码之AQS源码剖析
  9. 《高级软件测试》web测试实践--12月30日记录
  10. ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES)【奇葩的bug】
  11. Salesforce 应用生命周期管理
  12. ETL概念详解
  13. Java中Map接口的遍历
  14. 利用cglib包实现Spring中aop的<aop:advisor>功能
  15. UNIX环境编程学习笔记(17)——进程管理之进程的几个基本概念
  16. 使用 amcharts 和 highcharts 绘制多曲线时间趋势图的通用方法
  17. POJ 1845 Sumdiv(求因数和 + 逆元)题解
  18. Unit Testing of Spring MVC Controllers1
  19. mysql 时区设置
  20. OpenLTE安装教程

热门文章

  1. 2019年,Golang开始吊打Java性能了!!!
  2. PAT 1026程序运行时间
  3. 为啥git会这么差!!!!
  4. 精益车间管理如何实现?让APS排程系统来帮忙
  5. kubernetes学习Service之headless和statefulSet结合
  6. Maven打包时出现“Show Console View”错误弹出框,错误详情为“An internal error has occurred. java.lang.NullPointerException”的解决方法
  7. JavaScript 作用域不完全指北
  8. <h1>~<h6> 标题标签
  9. linux 下首次使用github 和其中遇到的问题
  10. HLOJ1366 Candy Box 动态规划(0-1背包改)