1. 需求
电脑A和电脑B本来通过服务器同步工作目录。服务器时linux系统上有个裸仓库,不管在A上还是B上工作,工作完毕后使用git go与服务器仓库同步。A和B都是windows系统,在工作目录下有个git残酷,里面的config文件里与远程连接的命令类似“url = ssh://user@111.111.111.111:22/home/user/gitlib/ww.git” 。由于在windows上我们只运行git命令与服务器交互,所以无需windows上有ssh服务进程。
现在,由于服务器出问题,想通过u盘进行同步。 当然,同步过程还是使用git。初步打算是在windows上安装ssh服务,然后,把u盘的路径写到上面的url里面。
2. 首先尝试了在windows 10下使用linux子系统,方法
(1)在控制面板-》添加/删除程序-》开启/关闭特性里选中linux 子系统,重启。然后在应用商店里搜索ubuntu安装
(2) 运行ubuntu,等会安装成功后,设置用户名和密码。使用sudo passwd设置root的密码。
使用这种方式相当于在使用linux,win的盘默认被挂载在/mnt下,我们应该也可以挂在u盘。
使用这种方式每次需要打开linux子系统。
3. 我们只想使用ssh服务。win10自带有openssh。在设置-》应用-》应用和功能-》管理应用和功能-》添加功能里添加openssh服务端,然后安装。安装后,在服务里设置将其启动并设置为自动启动。
然后,就可以使用xshell登陆进本机了。用户名和密码就是windows的用户名和密码。要注意如果win用户没有设置密码,应该先设置密码才能ssh登陆。
登陆进去后,默认是类似cmd的命令行,收入bash回车就进入linux的命令行了,可以输入一般的linux shell命令了。使用mount可以看到win的盘挂载在/mnt下。
突然发现,虽然是用win的用户登陆进去的,但是运行了bash后,就是上面第2步中所设置的linux用户了,root密码也是那里设置的。所以看来启用linux子系统也是必要的。
4. 突然发现,直接把url设置为本机路径就可以实现我们的目的。
url = D:/xxx/tx
要点:
(1) 假设我们的工作目录是D:/xxx/t1,这里面有个正常的仓库。现在我们要通过D:/xxx/tx来同步。那么我们首先需要从t1克隆一个裸仓库。进入D:/xxx, 运行 git clone --bare D:/xxx/t1 tx
注意,如果不是裸仓库,则无法push成功。
5. 总结
(1)在A电脑进入 u盘(E) ,将工作仓库克隆为一个裸仓库到u盘
(2)在B电脑插入u盘,路径设置为u盘,进行git pull
(3) 后面两个电脑都设置好路径,直接进行git go