因为之前有些代码是商业机密,也不能放公开外网,又像多端同步,而 github 在大部分城市都无法打开,需要翻墙访问;同时不太信任国内的托管不知道何时就会倒闭。

所以想到用 iCloud 托管,但是直接把本地所有代码放到 iCloud 同步目录下不启用 git 的话,代码编辑的历史看不到。如果创建本地仓库在iCloud 同步目录下,iCloud 回随着每次文件变化都触发同步操作——从流量角度和心理感受上不可接受。

所以基本都架构是:

  • iCloud 只存储远端仓库的数据,这样相比本地仓库少很多源数据——把远端仓库放到 iCloud 同步文件夹内
  • 本机的其他位置,创建本地仓库,不会频繁触发同步

具体步骤:

  1. 创建远端的仓库,在 iCloud 的同步目录下创建文件夹如 git-server;
1
2
#cd ~/Documents/git-server
#git init --bare skip-login.git
  1. 回到本地仓库的根目录(假设是刚刚初始化的 git 仓库)
1
2
#git remote add origin ~/Documents/git-server/skip-login.git	
#git remote set-url origin ~/Documents/git-server/skip-login.git	

上述两步骤,将本地仓库和远程仓库绑定。

第一次执行 git commit, 还需要设置本地 branch 和远端 branch 的对应关系(main 对应远端origin/main)

1
git push --set-upstream origin main #把本地 main 分支挂载 origin 的 upstream 上

至此简单几步,就完成了在本机创建 remote 服务器,并且同时支持 iCloud 自动同步,数据不会丢失——安全保密又方便。

如果需要多个机器上访问,如果这些机器都启用 iCloud 同步,即可实现伪 github 的效果。