There are many Git hosting services such as GitHub, GitLab, Bitbucket, etc. However hosting services often has restrictions. When wanted more control, the best choice is to run Git server on your own server.
This tutorial shows how to set up Git server in Linux. Commands have been tested on Ubuntu 20.04 LTS.
Make sure you have installed Git in your system.
Set up Git server
Create a new user for managing the Git repositories:
sudo adduser --system --group --shell /bin/bash git
git user and
/home/git home directory. It will be used to store all the repositories.
su command to switch to
sudo su - git
Create SSH directory for that user and set correct permissions:
mkdir ~/.ssh chmod 700 ~/.ssh
authorized_keys file which will be used to store SSH keys of the authorized users. Set correct permissions for that file.
touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
Git server is ready. Now we can run the following command to initiate a new empty repository:
git init --bare ~/projects/project_name.git
You can specify directory name as you want. But you should to create repository in home directory of the
Add SSH keys
To be able to access repository in the Git server, we need to add SSH public key of authorized user to the
authorized_keys file for the
authorized_keys file in Git server:
Add SSH public key of the user in a file. You can get public key by running the following command in local system:
If you get error 'No such file or directory', you need to generate SSH key pair. It can be done using the following command:
The SSH public key will look something like this:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCYDEAfebZoY1/N56v/4oD4QVPBpcxND3TcCGMFq/PCGoFlZ0FUlweQwSYtH+J+yljB9yL/TE0xAA+23hyfRteebYSt0ul/e67yHF4xOJtY/JYhVkWYv+e5qv0fZp46+GpMYGVzQfBzv/nu5fcEcFe33LHfakrP8i3y2PB10rK6ZG/+si7zGBmjDzIlAqsD96H0SXbuVgXpYAitxb/vop9JZbwbfMWzq+sjBt3qRRHA97yzItQaF3Ne2gfewIpUPDZ4uX2REJbuoPPrQ/D7jeNGJRwMgwwby9Ngs17SKpEsa+YrdtyaHZ+iVOSaabqBL0G/7W0UKXJCRdzkpT93V/XevAH6wRG27LL8KnNuPBcgbbaQJvp/PjcHExy6gkqkTV5DM1EBL+ICoC3TyyJNulLTqfzWlAIbY1u+Z9rzqtBPZDu7buiN/wrUf/xujeJa4/PaU1H2ZXR+SgaWQ0eIqkiEuT1TeYzs+P1X/yTOxLG/qHnaiUnQzsU3CA0JaGylhJM= tester@ubuntu
Setup up local Git repository
In your local system create a project directory and navigate to it:
mkdir project_name && cd project_name
Initialize Git repository:
git init .
Add remote Git repository to your local repository:
git remote add origin git@<IP_ADDRESS>:projects/project_name.git
<IP_ADDRESS> is IP address of the Git server.
To test if everything is working as expected, create a file:
Add changes to the staging area:
git add .
Save changes to the local repository:
git commit -m "project init"
Upload local repository changes to a remote repository:
git push origin master