为什么鼓捣这个呢?这还得从几年前说起。
几年前刚入行的时候花了几个星期的泡面钱买了个flashFXP,后来一直用这个上传,用了几年用习惯了倒也么什么。后来虽然没有摆脱贫困,倒也从每月给父母的养老钱里克扣了几个月终于卡了几百块买了个鼠标。
毕竟鼠标是从父母养老钱里卡出来的,用了一段时间后逐渐心疼鼠标外壳的包浆和逐渐松动的鼠标滚轮。
后来在同行那里get了下面的办法
老传统了:开始前假设已经嫖或者白嫖了一个服务器。。服务器已经能连ssh。。
我这里搞来的服务器是debian
第一步安装git。
apt-get install git
第二步创建一个git用户。
这里的git用户作用主要是限制git运行权限,所以账户名随意。所以名字阿猫阿狗随意,所以我起名阿狗,如下↓↓↓
adduser agou
看到shell窗口有下面的输出后直接敲两次密码
Adding user `agou' ...
Adding new group `agou' (1000) ...
Adding new user `agou' (1000) with group `agou' ...
Creating home directory `/home/agou' ...
Copying files from `/etc/skel' ...
New password:
这个账号不需要其他任何操作所以先晾着走第三步
给这个阿狗账号创建一个只有它能和root能访问的路(gou)径(wo)。
然后初始化一个空仓库。注意仓库的用户权限必须有这个阿狗。
不出意外的话执行下面这几条就可以了,路径随意,简短一点就很好。
mkdir /git
git init --bare testgit.git
chown -R agou:agou /git
不出意外的话git地址就出来了
agou@ip:/git/testgit.git
先记住这个地址。后面还要给这个仓库做点骚操作。
然后给这个账号弄一个ssh秘钥访问。
下面这个文件名你就要认真了,不然你就只能每次上传按密码。
mkdir /home/agou/.ssh
touch /home/agou/.ssh/authorized_keys
然后把你本地的ssh公钥贴在个文件里面,一条占一行
如果你没有在本地创建过ssh秘钥的话(晕),看下面。 引号里的内容可以随意替换。可以是邮箱也可以是其他。作用只是为了方便区分。第一行之后密码随意。或者疯狂敲回车跳过密码
ssh-keygen -t ed25519 -C "agouOnlyKey"
查看公钥
cat ~/.ssh/id_ed25519.pub
执行cat后的结果就是你以后所以骚操作需要用到的公钥了。整个复制贴进authorized_keys
这里服务器的基本配置就已经完成。
在本地项目根目录同样初始化git
git init
git remote set-url origin agou@你的ip:/git/testgit.git
或者直接clone服务器上刚才弄的仓库
git clone agou@你的ip:/git/testgit.git
测试上传
git add .
git commit -m '骚操作'
git push origin
正常情况下,能clone这步就没什么问题。
如果出现Enter passphrase for key '/home/xxx/.ssh/id_ed25519': 这样的字样输入创建sshkey的时候输入的密码就可以了。
git在上传后默认情况下是没有代码在路径下的。所以我们要在服务器上的仓库中继续骚操作
在/git/testgit.git/hooks/创建一个名为post-receive的可执行文件,
touch /git/testgit.git/hooks/post-receive
chomd +x /git/testgit.git/hooks/post-receive
文件内容如下
#!/bin/bash
git archive --format zip -o /git/testgit.git/$(git log --pretty=format:"%h" -1).zip HEAD
unzip -o $(git log --pretty=format:"%h" -1).zip -d /var/www/或者其他路径
rm $(git log --pretty=format:"%h" -1).zip
上面是bash文件是在git每次提交修改以后自动把仓库里的代码提取打包然后解压到指定目录并覆盖,完成后删除压缩包。
如果git push出现一堆error 请给解压目标目录添加阿狗账户权限
git hook可以存放git各个流程的命令
hooks里面有各个流程的sample文件。
以上内容纯粹本人现在摸着日渐接近本人发型的键盘帽有感而发。。。。