配置一个 git 客户端
使用具有 root 用户的 ssh 连接到 git-client.on-itroad.com。
通过在 /etc/hosts 中添加以下行来配置名称解析。
[root@git-client ~]# echo "192.168.1.129 git-server.on-itroad.com git-server" >> /etc/hosts
使用 yum 命令安装 git rpm。
[root@git-client ~]# yum install -y git Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Package git-1.8.3.1-19.el7.x86_64 already installed and latest version Nothing to do
git 已经安装在 git-client.on-itroad.com 上,因此 yum 没有执行任何安装。
以 jackli 用户身份连接并在 jackli@git-client.on-itroad.com 和 git@git-server.on-itroad.com 之间配置基于密钥的身份验证。
[jackli@git-client ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jackli/.ssh/id_rsa): Created directory '/home/jackli/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/jackli/.ssh/id_rsa. Your public key has been saved in /home/jackli/.ssh/id_rsa.pub. The key fingerprint is: SHA256:qJKo3QumkS/Rz/LOqR3gCEOdYH9lLaeGgS1B/QkqrkE jackli@git-client.on-itroad.com The key's randomart image is: +---[RSA 2048]----+ | o.o= o. | |. +o.=o. o | | . +o.= = | |.E ... * | |=.o o S | |+B.o . | |*o*oo | |+*.*oo | |o.+=O. | +----[SHA256]-----+ [jackli@git-client ~]$ ssh-copy-id git@git-server.on-itroad.com /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/jackli/.ssh/id_rsa.pub" The authenticity of host 'git-server.on-itroad.com (192.168.1.129)' can't be established. ECDSA key fingerprint is SHA256:PhsrMh10ZgS3G8P/upEd5bIbjTbUW0Asbbgtsq9y3Xs. ECDSA key fingerprint is MD5:24:af:0c:3a:33:39:2b:2a:d5:3d:64:05:a2:b6:a1:b8. Are you sure you want to continue connecting (yes/no)? yes /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys git@git-server.on-itroad.com's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'git@git-server.on-itroad.com'" and check to make sure that only the key(s) you wanted were added. [jackli@git-client ~]$ ssh git@git-server.on-itroad.com Last login: Sun Dec 9 00:22:46 2018 from git-server.on-itroad.com [git@git-server ~]$
为 jackli 用户设置以下 git 变量。
[jackli@git-client ~]$ git config --global user.name "jackli" [jackli@git-client ~]$ git config --global user.email "jackli@git-client.on-itroad.com"
创建一个用于保存本地 git 存储库的目录。
[jackli@git-client ~]$ mkdir ~/repo [jackli@git-client ~]$ cd ~/repo
创建 project1 git 存储库的克隆。
[jackli@git-client repo]$ git clone git@git-server.on-itroad.com:~/repo/project1 project1 Cloning into 'project1'... warning: You appear to have cloned an empty repository. [jackli@git-client repo]$ ls project1 [jackli@git-client repo]$ cd project1 [jackli@git-client project1]$ ls [jackli@git-client project1]$
我们在本地机器上创建了 project1 存储库的克隆。
我们可以看到当前存储库中没有任何文件。
让我们其中创建一些文件。
[jackli@git-client project1]$ echo "my first file" > file1.txt [jackli@git-client project1]$ cp /etc/hosts . [jackli@git-client project1]$ ls file1.txt hosts
将这两个文件添加到我们的 git 存储库中。
[jackli@git-client project1]$ git add . [jackli@git-client project1]$ git commit -am "My First Commit" [master (root-commit) 10394a7] My First Commit 2 files changed, 4 insertions(+) create mode 100644 file1.txt create mode 100644 hosts
将这些更改推送到 git-server.on-itroad.com 上的远程 git 存储库。
[jackli@git-client project1]$ git push oroirn master Counting objects: 4, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 362 bytes | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) To git@git-server.on-itroad.com:~/repo/project1 * [new branch] master -> master
要验证更改,请通过 ssh 连接到 git-server.on-itroad.com 并检查日志。
[git@git-server project1]$ git log commit 10394a774797bc5c5313b9aae086aa1ab71c69b5 Author: jackli Date: Sun Dec 9 01:04:16 2018 -0500 My First Commit
我们已经在 Red Hat Enterprise Linux (RHEL) 7.6 环境中成功配置了我们的 git 服务器和客户端。
安装 git 服务器
git rpm 在 RHEL/CentOS ISO 中提供,因此我们可以轻松地从本地 yum 存储库安装 git。
使用 ssh 连接到 git-server.on-itroad.com,并使用 yum 命令安装 git。
[root@git-server ~]# yum install -y git [root@git-server ~]#
我们需要一个用户来拥有我们的 git 存储库。
因此,我们添加git用户并设置密码如下:
[root@git-server ~]# useradd git [root@git-server ~]# passwd git Changing password for user git. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
git 是一个著名的版本控制系统。
git 用于跟踪计算机文件的更改并协调多人对这些文件的工作。
git 主要用于软件开发团队的源代码管理,但是,它可用于跟踪任何文件集的更改。
在本文中,我们将配置一个本地 git 服务器,然后我们将为我们的项目创建我们的第一个 git 存储库,最后从远程客户端访问它。
创建第一个 git 存储库
现在,使用 git 用户登录并创建一个本地 git 存储库。
[root@git-server ~]# su - git [git@git-server ~]$ mkdir ~/repo [git@git-server ~]$ cd ~/repo [git@git-server repo]$ git init --bare --shared project1 Initialized empty shared Git repository in /home/git/repo/project1/
在这里,我们创建了一个目录 repo,将我们所有项目的存储库放在一个地方。
然后,我们为我们的 project1 项目创建了一个裸存储库。
注意:裸仓库没有工作区,因此无法在本地添加文件。
而共享存储库用于允许项目成员将更改推送到 git 服务器。
通过复制示例文件来启用更新后挂钩,如下所示:
[git@git-server repo]$ cd ~/repo/project1/hooks/ [git@git-server hooks]$ cp post-update.sample post-update
git 通过 ssh 服务访问远程存储库,因此,不需要明确的 Linux 防火墙配置。
我们的 git 服务器已经成功配置,我们已经为我们的第一个 git 项目创建了一个空的存储库。