搭建git私有仓库
前言
github毕竟是公开的,而私有仓库又得花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。
搭建github私有仓库
首先找一台能联网的服务器,安装相关的软件包
[root@localhost ~]# yum install -y git
添加 git 用户并设置用户登陆:
[root@localhost ~]# useradd -s /usr/bin/git-shell git
设置 git 用户的 shell 的目的是为了不让 git 用户远程登陆
创建 authorized_keys 文件,并更改属主、属组和权限,用来存客户端机器上的公钥
[root@localhost ~]# cd /home/git/
[root@localhost ~]# mkdir .ssh
[root@localhost ~]# touch .ssh/authorized_keys
[root@localhost ~]# chown -R git.git .ssh
[root@localhost ~]# chmod 600 .ssh/authorized_keys
创建存储 git 代码的仓库
[root@localhost git]# mkdir /data/gitroot
[root@localhost git]# cd /data/gitroot/
[root@localhost git]#git init --bare sample.git
# 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,
# 所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾
[root@localhost git]# chown -R git.git sample.git
以上操作是在 git 服务器上做的,平时 git 服务器是不需要开发人员登录修改代码的,它仅仅是充当着一个服务器的角色,就像 github 一样,平时操作都是在我们自己的 pc 上做的。
客户端使用
首先要把客户端上的公钥放到 git 服务器上 /home/git/.ssh/authorized_keys 文件里
[root@localhost ~]# ssh-keygen -t rsa # 创建密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
70:4f:c1:c0:4f:a9:82:8e:f2:ae:ae:c1:dc:a3:1f:f2 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| ..o.. |
| . +. |
| .. .+. |
| . .o.o. |
| o .S . |
|+ o . |
|.* + |
| .= o |
|==oE |
+-----------------+
[root@localhost ~]# scp ~/.ssh/id_rsa.pub 192.168.3.163:/home/git/.ssh/authorized_keys # 复制到远程 github 的服务器上
root@192.168.3.163's password:
id_rsa.pub 100% 408 0.4KB/s 00:00
在客户端上(自己pc)克隆远程仓库
[root@localhost tmp]# git clone git@192.168.3.163:/data/gitroot/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
[root@localhost tmp]#
此时就可以在当前目录下生成一个sample的目录,这个就是我们克隆的远程仓库了。进入到这里面,可以开发一些代码,然后push到远程。
我们来操作试试:
进入目录下并写入内容
[root@localhost tmp]# cd sample/
[root@localhost sample]# ls
[root@localhost sample]# echo "test" >> 1.txt
[root@localhost sample]# ls
1.txt
[root@localhost sample]# cat 1.txt
test
我们还要设置 git 的全局变量
[root@localhost sample]# git config --global user.name "Your name"
[root@localhost sample]# git config --global user.email "Your@example.com"
我们提交修改并上传到仓库
[root@localhost sample]# git add 1.txt
[root@localhost sample]# git commit -m "add 1.txt"
[master (root-commit) e1c57f0] add 1.txt
1 file changed, 1 insertion(+)
create mode 100644 1.txt
[root@localhost sample]# git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 211 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.3.163:/data/gitroot/sample.git
* [new branch] master -> master
[root@localhost sample]#
我们来看看是否修改成功了
[root@localhost sample]# cd ../
[root@localhost tmp]# rm -fr sample/
[root@localhost tmp]# git clone git@192.168.3.163:/data/gitroot/sample.git
Cloning into 'sample'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
[root@localhost tmp]# cd sample/
[root@localhost sample]# ls
1.txt
[root@localhost sample]# cat 1.txt
test
[root@localhost sample]#
删除本机上的sample目录,再从仓库中克隆,发现和我们上交时相同,修改成功。github私有仓库搭建成功了。
最后更新于
这有帮助吗?