在Linux下搭建属于你自己的git服务器(MAC版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yishengzhiai005/article/details/79947070

环境说明

  • 本地mac系统,一般都有git程序安装(如果没有则使用:brew install git)

  • 服务器版本是ubuntu-14.04

直入主题

​ 使用mac终端远程连接linux服务器(命令:ssh [服务器ip], 之后输入服务器密码)默认都是root,密码为了安全起见,你在输入时是看不到的,成功登陆后就会进入控制台,我们用命令完成所有的操作,下面就是详细的步骤.

注:之后在本地输入的命令都是在gitbash下完成的

1、在控制台输入命令sudo apt-get install git,安装git,如果你是新安装的ubuntu,直接安装可能会报错,需要先执行sudo apt-get update

2、在系统里新增一个用户,登录名为git,

sudo adduser git接着就会让你输入密码及一些用户信息,一直回车就行

3、初始化git仓库

进入git目录,新建文件夹travel作为代码仓库

cd /home/git
mkdir travel
cd travel
git init --bare travel.git

​ 其中--bare参数是为用户创建一个裸仓库,这个’裸‘的意思就是版本库里以后只会生成版本的历史记录信息,而不会有项目源文件的拷贝。不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本历史记录文件就存放在.git目录下;而使用--bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面。

​ 使用裸仓库最根本的原因是为了避免冲突,如果有人在服务器上操作仓库的master分支,那么如果别的用户通过远端仓库的方式push代码到master分支,会有很大的概率发生冲突,所以使用--bare参数让用户无法在服务器上操作git仓库。

4.在本地的mac系统生成ssh key

看看有没有.ssh文件,

如果没有咱们手动生成一下

ssh-keygen -t rsa

或者生成一个带有你邮箱信息的ssh-key

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

之后就会让你输入一些ssh key的信息,一直回车就行,之后就可以看到.ssh文件了,里面有两个文件

  • id_rsa:称为私钥

  • id_rsa.pub:称为公钥,我们需要把公钥里的信息存入到服务器的/home/git/.ssh/authorized_keys文件中

authorized_keys是专门用来存公钥的地方。

​ 把用scp命令将id_rsa.pub上传到服务器。

这里要分为三步:

第一步:在linux服务上执行命令

cd /home/git
mkdir .ssh
chmod 777 /home/git/.ssh   这个命令是放开.ssh的读写权限,否则之后的赋值操作会提示没有权限

第二步:在你本地执行下列命令,使用scp命令吧id_rsa.pub复制到服务器的/home/git/.ssh这个目录下

scp ~/.ssh/id_rsa.pub git@[你服务器的外网ip地址]:/home/git/.ssh
例如 scp ~/.ssh/id_rsa.pub git@60.205.189.99:/home/git/.ssh

第三步:在linux服务器上将id_rsa.pub的名称改为authorized_keys

mv id_rsa.pub authorized_ke

好了现在就完成了将本地公钥添加到服务器。

5、修改文件的所有者,将/home/git目录下的所有文件及文件夹归git用户所有,并修改目录权限chmod 755 /home/git,在服务器上依次键入下列命令

chown -R git:git /home/git
chmod 755 /home/git
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

6、修改ssh配置文件,修改完之后重启ssh

vim /etc/ssh/sshd_config
service ssh restart

AuthorizedKeysFile这个配置项默认是被注释掉的,现在删掉前边的#就行。

7、在目录/home/git/travel/travel.git/hooks创建post-receive 文件,主要导向显示文件存储的工作目录

cd /home/git/travel/travel.git/hooks
vim post-receive编写以下内容
WORK_TREE='/home/git/travel/work'
git  --work-tree="${WORK_TREE}" reset --hard

升级post-receive文件的权限:chmod 777 post-receive

到这里我们的私人git服务器就搭建好了,下面就看看能不能push和pull代码吧。

这里你得找到你的git服务器地址,根据这个教程,我们的服务器地址应该是这个

git@60.205.189.99:/home/git/travel/travel.git

在本地gitbash下键入命令

git clone git@60.205.189.99:/home/git/travel/travel.git

输入完这个命令你就可以把服务器上的仓库获取到你本地

之后使用如下命令,进行上传代码,获取代码。

git add 
git commit 
git push 
git pull

今天的文章就到这里,欢迎大家留言。。。。。。。

8. 在服务器上的/home/git/travel 目录下查看自己上传的内容

注意:git所有的文件和目录都应该是git:git (git的用户和用户组)(不然会由于权限问题上传不上去)



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页