gpt4 book ai didi

git - 维护多个存储库时如何设置 GIT_DIR & GIT_WORK_TREE

转载 作者:太空狗 更新时间:2023-10-29 12:56:32 28 4
gpt4 key购买 nike

很像this SO post ,我有以下工作流程,我想用 git 维护:

  1. 多人在本地发展
  2. 做一些事情
  3. promise 更多的事情
  4. 推送到暂存区
  5. 在暂存中测试新代码
  6. 投入生产

我们的登台服务器服务于许多不同的站点。我想在用户主目录的不同文件夹中为每个设置存储库。每个存储库都会有一个接收后 Hook (ala the Daniel Messier article),用于将更改 check out 到该站点/存储库的 Web 根目录中。

给我带来麻烦的是第六个。

当我尝试运行任何 git 命令时,我收到错误“致命:此操作必须在工作树中运行”。无论我是从存储库(/home/gituser/website1.git - 我认为无论如何都不应该工作..)还是从网络根目录(/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

所以我需要:

  1. 在每个命令中输入目录和工作树的替代方法
  2. 将它们设置为持久环境变量的替代方法,因为这仅适用于 website1,不适用于 website2、website3 等

我的做法是否正确?我如何获取每个存储库所需的 git 目录信息?

最佳答案

如果我没理解错的话,每个网络根目录都有一个不同的存储库。如果是这种情况,您可以在存储库级别设置工作树(在 .git/config 文件中):core.worktree。如果 repo 配置为 bare,它将不起作用:

[core]
bare = false
worktree = /webroot/dir/for/this/repo

设置完成后,Git 命令(如 git status)应该再次从存储库文件夹运行,任何使用工作树的命令(git statusgit checkout 等)将使用 core.worktree 位置。 (请注意,Git 命令仍然无法在工作树位置运行,因为它不是存储库。)

关于git - 维护多个存储库时如何设置 GIT_DIR & GIT_WORK_TREE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10821825/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com