就像这篇 SO post一样,我有以下我想用 git 维护的工作流程:
- 多人在当地发展
- 提交一些事情
- 提交更多的东西
- 推送到暂存
- 在 Staging 上测试新代码
- 推向生产
我们的登台服务器服务于许多不同的站点。我想在用户主目录的不同文件夹中为每个设置存储库。每个存储库都会有一个 post-receive 钩子(类似于Daniel Messier 的文章),用于检查该站点/存储库的 Web 根目录中的更改。
给我带来麻烦的是六号。
当我尝试运行任何 git 命令时,我收到错误“致命:此操作必须在工作树中运行”。无论我是从存储库(/home/gituser/website1.git - 我认为无论如何都不应该工作..)还是从 Web 根目录(/var/www/website1)运行“git status”,我都会收到此错误.
但是,如果我指定 GIT_DIR 和 GIT_WORK_TREE,那么我可以运行 git 命令。这两项工作:
$ git --git-dir /home/gituser/website1.git --work-tree /var/www/website1 status
$ GIT_DIR=/home/gituser/website1.git GIT_WORK_TREE=/var/www/website1 git status
所以我需要:
- 与每个命令一起键入目录和工作树的替代方法
- 将它们设置为持久环境变量的替代方法,因为这仅适用于 website1,而不适用于 website2、website3 等
我这样做对吗?如何获取 git 每个存储库所需的目录信息?