同步服务器代码

同步服务器代码

如果服务器能够联网,那就直接本地push到github上,远程服务器再pull下来就可以了。如果服务器不能够联网,可以在本地仓库添加一个服务器上的远程仓库,想要更新服务器代码的时候就额外push一下到新仓库上。

一个典型的情况是这样的,服务器不能够联网,本地需要通过登陆跳板机访问远程服务器,在本地修改了程序,想要同步到服务器上。

本地 -> 跳板机 (Lab) -> 服务器 (Target2)

先配置sshconfig文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Host Lab
HostName xx.xx.xx.xx
User shen

Host Target2
HostName xx.yy.xx.xxy
Port 22
User shen

Host inTarget2
HostName xx.yy.xx.xxy
Port 22
User shen
ProxyCommand ssh -W %h:%p Lab

将本地项目先copy到远程服务器上

1
scp -r project inTarget2:~

project是本地的项目文件夹,inTarget2:~是想将项目拷贝到服务器上的目录。之后在本地仓库下添加新的远程仓库

1
git remote add target2 inTarget2:~/project

其中target2是这个远程仓库的名字,后面的是这个远程仓库的地址。

我们创建了一个新的远程仓库,名字叫做target2,地址是inTarget2:~/project。git存在两种仓库类型,bare仓库和non-bare仓库, non-bare仓库大概相当于我们正在本地开发的仓库,正常情况下是不能够push到non-bare仓库的,比如两个人合作开发一个代码,A把修改后的代码直接push到了B正在工作的仓库,大家就混乱了。而push到Github上的仓库是bare类型的仓库,其中不包含工作区(大概)。我们可以登陆到服务器的项目目录,将这个项目切换成bare类型。

1
git config --bool core.bare true

此时再回到本地修改代码,就可以同步push到新服务器上了,比如把develop分支的代码push到服务器上。

1
git push target2 develop