您的位置:首页 > 其它

git服务器搭建

2017-05-01 20:55 120 查看
修改程序都是在本地电脑上,运行程序则需要在服务器上,想在本地电脑和服务器做同步

1. 环境

本地电脑:ubuntu16.04,局域网, 用户名jankyee

服务器:ubuntu16.04,公网,没有root权限,用户名为jankyee

git版本:2.7.4

git服务器搭建在服务器上(有公网IP)

2. 服务器配置

网上流传的步骤一般是新建一个git用户[1],但是由于服务器上没有root权限,因此直接使用用户名jankyee。而与服务器的连接使用ssh

在服务器的
/home/jankyee
目录下新建一个名为
lab_server.git
的仓库:
git --bare init lab_server.git


git init
git --bare init
的区别:用
git init
初始化的服务器仓库,服务器用户可以直接执行所有git操作来修改仓库,当有其他用户push上来时可能会冲突,导致版本混乱。而
git --bare init
则产生一个“裸”仓库,意思就是这个仓库只保存git提交记录的版本信息,而不允许服务器用户直接在上面进行进行git操作,否则会报错
This operation must be run in a work tree
。一般来说,服务器仓库一般初始化为裸仓库较好。

ssh配置,在
/home/jankyee/.ssh
中新建文件
authorized_keys
, 将客户端的公钥填入文件中,一行一个(后面会详细讲)

todo

3. 客户端(本地电脑)配置

生成公钥-私钥对

ssh-keygen -t rsa -f ~/.ssh/id_rsa.lab_server -C "jankyee@jankyee-pc.com"


-C
参数是用来标识身份的,是放在生成的公钥的末尾的。我们知道在生成github的key的时候[2]这里填的是自己的github邮箱账号,这里我用了一个假的邮箱域名,其实随便填都可以。如果不填的话在公钥末尾就是用户名+主机名,我这里是
jankyee@jankyee-pc
。这个标识代表的git用户的身份,git仓库的版本信息中会有记录。有时需要配置
git config user.email
,那么这里的这个
user.email
就是这个标识,其实不一定非要是“邮箱”

-f
用来指定生成的位置,以及文件名。

注意区分开github所要用的key,我的github的key的生成方式是

ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "邮箱账号"


为了使两者同时可以使用,还要配置一下。首先新增配置文件:

touch ~/.ssh/config


之后修改权限

chmod 600 ~/.ssh/config


然后修改config文件内容为



通过
ssh-add -l
命令可以看到当前的key的情况,也可以添加,删除等,具体使用参照help

配置客户端免密码登录服务器,将生成的
id_rsa.lab_server.pub
公钥填写到服务器的
~/.ssh/authorized_keys


首先将公钥文件上传到服务器上

scp ~/.ssh.id_rsa.lab_server.pub labserver:/home/jankyee/.ssh
.

注意这里写的是简写
lab_server
, 如果是全写的话

scp ~/.ssh.id_rsa.lab_server.pub jankyee@ip:port/home/jankyee/.ssh


port后面是没有冒号的

登录服务器(这是仍需要密码)

ssh lab_server


cd ~/.ssh


cat id_rsa.lab_server >> authorized_keys
(注意:使用
>
会直接覆盖,使用
>>
则是在后面追加)

再次登录时可发现已经不需要密码了。另外在做git操作的时候同样也不需要密码了

如果没有配置上面的步骤的话,客户端在
git commit
的时候会提示需要配置
git config --global user.email


clone服务器的版本库。选择合适的目录

git clone lab_server:/home/jankyee/lab_server.git


尝试修改提交(master分支默认为当前分支)

cd lab_server


touch test_git


git add test_git


git commit -m "test git"


git push origin master


4. 服务器上查看文件内容

裸仓库是看不到文件内容的,只能看到文件的版本信息,而如果需要在服务器上查看文件的话(也就说最开始说到的同步),其实只用在服务器的工作目录下clone下就行了,相当于服务器上同时存在git服务器和git客户端

一种方法是直接使用本地路径,首先确定合适的工作目录

git clone 仓库的本地路径


git commit
的时候提示需要配置email,前面也已经说过,填上主机名或者随便即可,只要能确定自己身份就行。

一种方式是把git服务器和git客户端看成两个独立的网络实体,只不过这时git服务器的地址变成了localhost。同样地,按照客户端的步骤,生成公钥-私钥对,同样地,讲公钥追加到
authorized_keys
文件后面,其余配置和前面说的客户端配置一样。

Refer:

[1] http://www.jianshu.com/p/10b6a1ee7f64

[2] http://blog.csdn.net/hustpzb/article/details/8230454/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git ubuntu 服务器