利用git 同步本地与服务器代码

在服务器端直接用vim写代码固然不是个好体验,本文介绍用git在两者之间同步的方法。

免认证登录

先设置ssh公钥私钥来免密码登录。

1
2
cd ~/.ssh
ssh-keygen -t rsa -C "mail@domain.com"

复制过去

1
2
3
scp ~/.ssh/id_rsa.pub user@vps:./
ssh user@vps
cat id_rsa.pub >> /home/user/.ssh/authorized_keys

注意cat 后是>> 不是>,前者是追加,后者是覆盖。
若22端口不能使用,可以通过-P port_number指定使用的端口号

进入服务器项目

1
2
3
4
5
6
7
8
ssh user@vps  
cd /home/project
git init
echo "hello" >> README
git add README
git commit -m "add README"
exit

在本机上把项目 Clone 下来:

git clone user@vps:/home/project

若22端口不能使用,可以执行:

git clone ssh://user@vps:1280/home/project

修改钩子使其接受push

在服务器端
git config receive.denyCurrentBranch ignore

编辑 VPS 端 Git 钩子.git/hooks/post-receive 文件,内容为:

1
2
3
#!/bin/sh
cd ..
env -i git reset --hard

最后将文件设置为可执行:
chmod a+x .git/hooks/post-receive