# Git 2.19.1在SLES11安装与配置 - 运维手记 2018-11-26

> 作者：zning（https://ning.ae） · 发布：2018/11/26 23:32 下午 (UTC+8) · 原文：https://zning.me/15599739728339.html

今天工作有些东西需要整理，现在整理一下。

> 注意：本文首次撰写于2018-11-26，最近修改时间为2018-11-26，请注意相关程序的可用性与安全性。

### 安装

其实就是很简单的源码编译安装，但是官方给出的教程有点神奇，经过测试使用如下方法安装的：

```shell
localhost:software # wget -c https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.19.1.tar.gz
localhost:software # tar -zxvf git-2.19.1.tar.gz
localhost:software # cd git-2.19.1
localhost:software # ./configure
localhost:software # make && make install
```

如果安装期间报以下错误：

```shell
#install过程中出现了错误
http-push.c:18:19: fatal error: expat.h: No such file or directory
```

这是因为缺少相关模块，如果在联网情况下可以安装如下依赖:

```shell
# CentOS
yum install expat-devel 

# SLES
apt-get install expat-devel
```

git的安装大概需要下面这些依赖

```shell
curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
```

### Git客户端设置用户名与邮箱

```shell
localhost:software # git config --global user.name "ZNing"
localhost:software # git config --global user.email "abc@def.com"
```

Linux/macOS可直接在终端执行，Windows请打开Git Bash执行。虽然这是全局设置，但是如果仓库有其他用户名和Email地址也可以对某个仓库指定不同的用户名和Email地址。

### Git客户端生成SSH Key

1. 创建 SSH Key。在用户主目录下，看看有没有.ssh目录，如果有，再看看这个目录下有没有`id_rsa`和`id_rsa.pub`这两个文件，如果已经有了，可直接跳到下一步。如果没有，打开终端（Windows 下打开 Git Bash），创建 SSH Key：

    ```shell
    localhost:software # sh-keygen -t rsa -C "youremail@example.com"
    ```

    你需要把邮件地址换成你自己的邮件地址，然后一路回车，使用默认值即可，由于这个 Key 也不是用于军事目的，所以也无需设置密码。

    如果一切顺利的话，可以在用户主目录里找到`.ssh`目录，里面有`id_rsa`和`id_rsa.pub`两个文件，这两个就是SSH Key的秘钥对，`id_rsa`是私钥，不能泄露出去，`id_rsa.pub`是公钥，可以放心地告诉任何人。
    
2. 登陆GitHub/Gogs或者其他的Git Server Web端，打开“Account settings”(账户设置) - “SSH Keys”(SSH密钥)页面。然后，点“Add SSH Key”(添加密钥)，填上便于自己以后识别的Title(密钥名称)，在Key(密钥内容)文本框里粘贴`id_rsa.pub`文件的内容。点“Add Key”(添加密钥)，你就应该看到已经添加的Key(密钥)了。

    为什么GitHub等Git Server需要SSH Key呢？因为这些服务需要识别出你推送的提交确实是你推送的，而不是别人冒充的，而Git支持SSH协议，所以，这些服务只要知道了你的公钥，就可以确认只有你自己才能推送。

    当然，这些服务允许你添加多个Key。假定你有若干电脑，你一会儿在公司提交，一会儿在家里提交，只要把每台电脑的Key都添加到GitHub，就可以在每台电脑上往GitHub推送了。

## 参考文献

1. https://blog.csdn.net/fanshujuntuan/article/details/78077433
2. http://blog.51cto.com/putian/1287959
3. https://blog.csdn.net/maxsky/article/details/51171474
4. http://wiki.jikexueyuan.com/project/git-tutorial/remote-repository.html
5. http://www.luxinzhi.com/system/140.html
6. https://overtrue.me/articles/2015/05/install-latest-git-on-centos.html
7. https://blog.csdn.net/zsx157326/article/details/80059068
8. https://blog.csdn.net/chenqiai0/article/details/83472410
9. https://www.jianshu.com/p/3478e2a214a1
