CentLinux | Learn How to Install CentOS/Rocky Linux Servers

Sunday, December 9, 2018

How to Install and Use Git on RHEL/CentOS 7

Git Configure Local git Server Clients in RHEL 7.6

git is a famous version control system. git is used to track changes in computer files and to coordinate work on those files among multiple people. git is primarily used for source-code management by software development teams, however, it can be used to keep track of changes in any set of files. git is freeware and open source. It is packaged with almost every distribution of Linux operating systems.

In this article, we will configure a local git server, then we will create our first git repository for our project, and finally access it from a remote client.


Table of Contents:

Git Configure Local git Server Clients in RHEL 7.6

System Specification:

In this article, we have two virtual machines, one as the git server, and the other as the git client. Their specifications are:

Hostname: git-server.itlab.com git-client.itlab.com
IP Address:
Operating System: RHEL 7.6 RHEL 7.6


Install git Server:

git rpm is provided in RHEL/CentOS ISO, therefore we can easily install git from a local yum repository.

Connect to git-server.itlab.com using ssh, and install git by using yum command.

# yum install -y git

We need a user to own our git repository. Therefore, we add git user and set the password as follows:

# useradd git
# 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.


Create Your First git Repository:

Now, login with git user and create a local git Repository.

# su - git
$ mkdir ~/repo
$ cd ~/repo
$ git init --bare --shared project1
Initialized empty shared Git repository in /home/git/repo/project1/

Here, we have created a directory repo to keep all of our projects' repositories in a single place. Then, we have created a bare repository for our project1 project.

Note: A bare repository has no working area, therefore, it is not possible to add files to it locally. While a shared repository is used to allow project members to push changes to the git server.

Enable post-update hook by copying the sample file as follows:

$ cd ~/repo/project1/hooks/
$ cp post-update.sample post-update

git access remote repositories via ssh service, therefore, no explicit Linux firewall configuration is required.

Our git server has been successfully configured and we have created an empty repository for our first git project.


Configure a git Client:

Connect to git-client.itlab.com using ssh with root user.

Configure name resolution by adding following line in /etc/hosts.

# echo " git-server.itlab.com git-server" >> /etc/hosts

Install git rpm by using yum command.

# yum install -y git

git is already installed on git-client.itlab.com, therefore, yum didn't perform any installation.

Connect as ahmer user and configure keybased-authentication between ahmer@git-client.itlab.com and git@git-server.itlab.com.

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ahmer/.ssh/id_rsa):
Created directory '/home/ahmer/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ahmer/.ssh/id_rsa.
Your public key has been saved in /home/ahmer/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qJKo3QumkS/Rz/LOqR3gCEOdYH9lLaeGgS1B/QkqrkE ahmer@git-client.itlab.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.           |

$ ssh-copy-id git@git-server.itlab.com
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ahmer/.ssh/id_rsa.pub"
The authenticity of host 'git-server.itlab.com (' 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.itlab.com's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'git@git-server.itlab.com'"
and check to make sure that only the key(s) you wanted were added.

$ ssh git@git-server.itlab.com

Set following git variables for the ahmer user.

$ git config --global user.name "ahmer"
$ git config --global user.email "ahmer@git-client.itlab.com"

Create a directory for keeping local git repositories.

$ mkdir ~/repo
$ cd ~/repo

Create a clone of project1 git repository.

$ git clone git@git-server.itlab.com:~/repo/project1 project1
Cloning into 'project1'...
warning: You appear to have cloned an empty repository.
$ ls
$ cd project1
$ ls

We have created a clone of project1 repository on our local machine. You can see that currently there isn't any file in the repository. Let's create some files therein.

$ echo "my first file" > file1.txt
$ cp /etc/hosts .
$ ls
file1.txt  hosts

Add these two files to our git repository.

$ git add .
$ 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

Push these changes to the remote git repository at git-server.itlab.com.

$ git push origin 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.itlab.com:~/repo/project1
 * [new branch]      master -> master

To verify the changes, connect to git-server.itlab.com via ssh and check the log.

$ git log
commit 10394a774797bc5c5313b9aae086aa1ab71c69b5
Author: ahmer 
Date:   Sun Dec 9 01:04:16 2018 -0500

    My First Commit

We have successfully configured our git server and client in the Red Hat Enterprise Linux (RHEL) 7 environment.

If you find this article useful? Consider supporting us by Buy Me A Coffee

© 2023 CentLinux. All Rights Reserved.