1.在linux服务器上安装git
使用yum安装
yum install -y git
安装完后,查看 Git 版本:
git --version
可以看到版本号,表示安装成功。
2.创建 git 用户来管理 Git 服务
创建用户:
useradd git
设置密码:
passwd git
3.创建git仓库
创建存放git仓库的文件夹:
mkdir -p var/git/default.git
初始化:
git init --bare var/git/default.git
把git仓库拥有者改为git:
chown -R git:git var/git/default.git/
到此,服务器git仓库部署成功,现在我们就可以在本地客户端,git克隆服务器上git仓库来进行代码管理和多人协作:
git clone git@<服务器ip>:/var/git/default.git
克隆需要输入密码,密码为服务器添加的git用户密码。在这里推荐使用SourceTree,不仅拥有精美简洁的界面,还能记住密码,不用每次推送和拉取都输入密码。
如果你下载安装了SourceTree最新的版本,而且一直卡在了用户注册或者登录页面,可以使用以下方法跳过此步骤:
1.打开 我的电脑,在最上方的地址栏直接输入以下地址: %LocalAppData%\Atlassian\SourceTree\
2.在这个目录下新建一个名为 accounts.json 的文件,输入一下代码,保存即可。
[
{
"$id": "1",
"$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
"Authenticate": true,
"HostInstance": {
"$id": "2",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
"Host": {
"$id": "3",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
"Id": "atlassian account"
},
"BaseUrl": "https://id.atlassian.com/"
},
"Credentials": {
"$id": "4",
"$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
"Username": "",
"Email": null
},
"IsDefault": false
}
]
5.修改git用户使不能登录到服务器
为了服务器安全,之前在服务器端创建的 git 用户使其不允许 ssh 登录服务器
vi /etc/passwd
编辑文件,找到:
git:x:1000:1000::/home/git:/bin/bash
修改为:
git:x:1000:1000::/home/git:/bin/git-shell
注意这里的1000:1000
为 用户标识号:组标识号
,不同服务器创建可能不一样,这里只需要修改/bin/bash
为/bin/git-shell
。
到这里,在linux服务器部署git仓库就已经完成了。
6.利用钩子同步服务器代码
如果在客服端提交代码希望在服务器同时更新,这里我们可以使用git仓库的hooks目录下新建一个post-receive文件来进行更新,具体操作如下:
cd /var/git/default.git/hooks
vi post-receive
在post-receive里写入以下代码:
#!/bin/bash
git --work-tree=/home/website/wwwroot checkout -f
接着键入ESC->eq 写入保存。同时把文件拥有者改为git,并且给git赋有执行权限:
chown git:git post-receive
chmod 744 post-receive
/home/website/wwwroot
这里可以替换为你想更新的文件夹,同时要在该文件夹给git写入权限,这里我们可以把git用户加入root用户组,同时把要更新文件夹的用户组添加可写入权限:
usermod -aG root git
chmod -R 775 /home/website/wwwroot