Build the Git server under Linux

  • 2020-05-30 21:56:28
  • OfStack

It is well known that version of the system in the development environment is necessary, but we can put the code on the free hosting to the GitHub, if we don't willing to open the source code of the project, the company didn't want to pay to use, so we can build our 1 Git server, can use Gitosis to manage public key, or is more convenient.

Built environment:

Server CentOS6.6 + git (version

Client Windows10 + git (version

1. Install Git software

Linux is the server side system, Windows is the client side system, and Git is installed respectively

Installation server:

[root@linuxprobe ~]# yum install -y git
[root@localhost ~]# git --version   // After installation, view  Git  version 
git version

Install client:

Download Git for Windows, address: https:// /

Once installed, you can use Git Bash as the command line client.

$ git --version
git version    // After installation, view Git version 

Install Gitosis

[root@linuxprobe ~]# cd software/
[root@linuxprobe software]# git clone
[root@linuxprobe software]# yum install python-setuptools -y
[root@linuxprobe software]# cd gitosis
[root@linuxprobe gitosis]# sudo python install

The following message appears to indicate that the installation was successful

 Using /usr/lib/python2.6/site-packages
 Finished processing dependencies for gitosis==0.2

2. Create git users on the server side to manage Git services

[root@linuxprobe ~]# id git   // To view git Does the user exist 
id: git: no such user
[root@linuxprobe ~]# useradd git
[root@linuxprobe ~]# echo "123" | passwd --stdin git
[root@linuxprobe ~]# su - git  // Switch to the git Under the user 

Configure the public key

Configure administrators on Windows. git server needs some administrators. Upload the developer machine's public key to the server, add the administrator of git server, and open the git command line

$ ssh-keygen -t rsa   //1 Press enter, no password is required 
~ scp ~/.ssh/ git@  // Copied to the git On the server 

4. Configuration gitosis

Use the git user and initialize the gitosis

[root@linuxprobe ~]# cd .ssh
[root@linuxprobe ~]# gitosis-init < ./
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
[root@linuxprobe ~]# chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update   // Add permissions 

On the Windows machine clone gitosis-admin to the admin host

$ git clone ssh://git@
$ cd gitosis-admin
$ ls
$ gitosis.conf keydir

gitosis.conf: git Server configuration file

keydir: Store the client's public key

Configure the gitosis.conf file

$ vim gitosis.conf

[group gitosis-admin]      # Group name 
members = yueyong@SHA2-001    # The group members 
writable = gitosis-admin     # The project name 

[group test]        // And here I've added "test" The project team , Upload a git The server 
members = yueyong@SHA2-001
writable = test

Create a local test warehouse on the Windows manager machine and upload it to the git server

$ git config --global "Your Name"     // The first 1 The subsubmission requires setting personal information, setting the user name and mailbox 
$ git config --global ""
$ cd ~/repo 
$ mkdir test
$ git init
$ tocuh readme.txt

Submit to the remote server

$ git --version
git version    // After installation, view Git version 

The server will automatically create the test repository

$ git --version
git version    // After installation, view Git version 

5. Add other git user developers

Due to company development team number increasing, the private key to manually add developer/home/git /. ssh/authorized_keys more troublesome, through the above Windows management system of the machine 1 to collect other developers private key id_rsa. pub file, and then spread to the server, the configuration, user permissions for project, namely can pull and push the project from the remote warehouse, achieve common development.

$ git --version
git version    // After installation, view Git version 

$ git add .
$ git commit -m "add zhangsan@SHA2-002 pub and update gitosis.conf"
$ git push repo master

After the push is completed, the newly added developers can carry out the development of the project, and the subsequent addition of personnel can be added in this way, and the developer can directly bring down clone of the warehouse.

$ git --version
git version    // After installation, view Git version 

Error reporting problem: ERROR:gitosis serve main repository read access denied

According to the error, it can be seen that key is no problem, through screening, found that should not take this/home git/repositories/test git write full, git clone git@ test. git

That's it.

Related articles: