本文是基于ssh搭建git私服的学习总结,下面将会介绍如何搭建属于自己的远程库
在自己的服务器上安装git
我的服务器是centos7
yum install git
- 1
若是ubuntu或自己安装了apt安装管理工具 ,也可以使用apt-get install git
进行安装,当然,安装之前可以先升级,安装比较新版本的git.我好想没升级安装的是1.8
[root@iZ2ze3ldkm1p7szyuskxiwZ mygit]# git --version
git version 1.8.3.1
- 1
- 2
创建专门的远程仓库
其实本地库和远程库没有什么太大区别,只不过远程库存放了各个不同用户的本地库push的数据,通俗的说,也就是远程库保存了很多文件.用户push一个,远程库就存一个.存好了,那么下次用户就可以pul或fecth取东西了.下面就是具体在服务器创建远程库的具体过程:
创建一个新用户(可有可无)
为了方便管理,我们可以在linux服务器上创建一个新用户,就叫git.
adduser git
- 1
给这个git设置密码
passwd git
- 1
这个新用户信息保存在/etc/passwd文件里,我们查看后五行,如下,可以看到git账户信息在最一行.
他的家目录是/home/git, shell是/bin/bash,当然,出于安全考虑,创建的git用户应该不允许登录shell,可以通过编辑/etc/passwd文件完成.当然,创建用户的时候就可以使用-s参数指定禁用shell,或者使用usermod修改.我们先不修改.继续操作.
初始化远程库
进入git的家目录/home/git,创建一个仓库test-repo
[root@iZ2ze3ldkm1p7szyuskxiwZ ~]# su git
[git@iZ2ze3ldkm1p7szyuskxiwZ root]$ cd ~
[git@iZ2ze3ldkm1p7szyuskxiwZ ~]$ pwd
/home/git
[git@iZ2ze3ldkm1p7szyuskxiwZ ~]$ ls #我已经创建好了,没有可以创建
test-repo
[git@iZ2ze3ldkm1p7szyuskxiwZ ~]$ cd test-repo/
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
初始化一个裸库,不需要.git目录
git init --bare
- 1
当然如果你非要这个目录,也不是不可以.下面这张图说明了加上–bare参数与不加有什么变化
可以看到主要文件都差不多,但也有几个文件不一样.
本地进行push
git服务器就基本就搭建好了.现在本地就可以远程push了.远程库的地址git@182.92.200.149:/home/git/test-repo
git push git@182.92.200.149:/home/git/test-repo master
- 1
输入git的密码,就可以push成功了
进入远程库确认,如下,可以看到多了一个分支,就是刚才push的
[git@iZ2ze3ldkm1p7szyuskxiwZ test-repo]$ ls -a
. .. branches config description HEAD hooks info objects refs
[git@iZ2ze3ldkm1p7szyuskxiwZ test-repo]$ git branch -v
* master c964f4f tom开发了一个模块
*
[git@iZ2ze3ldkm1p7szyuskxiwZ test-repo]$
- 1
- 2
- 3
- 4
- 5
- 6
本地clone
我们在本地新建一个空的test目录,如下
现在进行clone,就把刚才的克隆下来git clone git@182.92.200.149:/home/git/test-repo master
root@xiaoxin-Inspiron-5567:/usr/local/gitrepo-tet/test# git clone git@182.92.200.149:/home/git/test-repo master
Cloning into 'master'...
The authenticity of host '182.92.200.149 (182.92.200.149)' can't be established.
ECDSA key fingerprint is SHA256:hMZZ9soJQf5V4hhGe/ddcwdFnt91GErC5q/BxIuPxbw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '182.92.200.149' (ECDSA) to the list of known hosts.
git@182.92.200.149's password:
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
Resolving deltas: 100% (1/1), done.
root@xiaoxin-Inspiron-5567:/usr/local/gitrepo-tet/test# ls -a
. .. master
root@xiaoxin-Inspiron-5567:/usr/local/gitrepo-tet/test# cd master/
root@xiaoxin-Inspiron-5567:/usr/local/gitrepo-tet/test/master# ls -a
. .. .git test.md
root@xiaoxin-Inspiron-5567:/usr/local/gitrepo-tet/test/master#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
也没问题.