我使用Git来管理我的(iOS)项目的源代码,我现在已经做了很长一段时间了。但是我现在开始添加服务器端组件,我想确保服务器端代码保存在同一个存储库中,但与主代码分开 - 并设置在Web服务器上,以便无法访问整个代码库和历史记录。什么是一个理想的Git工作流程来处理两台计算机上的代码库,一台是本地的,一台是坐在Web服务器上的? (顺便说一下,我使用Nginx,如果在如何设置服务器配置以隐藏Git文件和历史记录方面有任何不同。)
答案 0 :(得分:2)
关于第一个问题,如何以服务器端仍然是独立项目的方式跟踪客户端和服务器端。您可以将服务器代码作为子模块合并到客户端项目中。
~/client$ git submodule add foo@bar:server.git
~/client$ git commit
这会将可在SSH URL foo@bar:server.git
访问的服务器存储库插入到子目录服务器中。子模块的另一种选择是子树合并。
将服务器代码签出到nginx中。 在服务器上的某处创建一个裸仓库,比如/var/git/server.git,并将其工作树设置到/ var / www / server /
cd /var/git
mkdir server.git && cd server.git
git init --bare
git config --bool core.bare false
git config --path core.worktree /var/www/server/
设置其接收后挂钩以检查新HEAD的工作树。
echo '#!/bin/sh' > hooks/post-receive
echo 'git reset --hard HEAD' >> hooks/post-receive
在开发中设置一个指向上面的遥控器:
client/server$ git remote add www root@bar:/var/git/server.git
client/server$ git push www master
或类似的......