2

我使用 Git 来管理我的 (iOS) 项目的源代码,我已经做了一段时间了,效果很好。但是我现在开始添加服务器端组件,我想确保服务器端代码保存在同一个存储库中,但与主代码分开——并在 Web 服务器上设置这样就无法访问整个代码库和历史记录。什么是理想的 Git 工作流程来处理两台计算机上的代码库,一台本地计算机,一台位于 Web 服务器上?(顺便说一句,我正在使用 Nginx,如果这在如何为服务器配置设置它以隐藏 Git 文件和历史记录方面有什么不同的话。)

4

1 回答 1

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

或类似的东西...

于 2013-08-09T22:54:57.900 回答