- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
很像this SO post ,我有以下工作流程,我想用 git 维护:
我们的登台服务器服务于许多不同的站点。我想在用户主目录的不同文件夹中为每个设置存储库。每个存储库都会有一个接收后 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
所以我需要:
我的做法是否正确?我如何获取每个存储库所需的 git 目录信息?
最佳答案
如果我没理解错的话,每个网络根目录都有一个不同的存储库。如果是这种情况,您可以在存储库级别设置工作树(在 .git/config
文件中):core.worktree
。如果 repo 配置为 bare
,它将不起作用:
[core]
bare = false
worktree = /webroot/dir/for/this/repo
设置完成后,Git 命令(如 git status
)应该再次从存储库文件夹运行,任何使用工作树的命令(git status
,git checkout
等)将使用 core.worktree
位置。 (请注意,Git 命令仍然无法在工作树位置运行,因为它不是存储库。)
关于git - 维护多个存储库时如何设置 GIT_DIR & GIT_WORK_TREE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10821825/
从脚本中,如何确定当前的 GIT_DIR?如果没有覆盖,它只是顶级目录或裸仓库的顶级目录。 我想要这样的东西: [/git/repo1/subdir]$ git show-git-dir /git/r
我已经从备份中恢复了一个 git 存储库,但它没有正确的文件权限。在 .git 中对所有文件和目录设置 owner +rw 是否足够,还是更微妙? 是否有用于检查或重置 .git 文件权限的实用程序?
这对我来说根本不清楚:http://git-scm.com/2010/04/11/environment.html 据我所知,我无法对个人存储库执行此操作。命令不够清晰... 据我所知,我可以这样做:
很像this SO post ,我有以下工作流程,我想用 git 维护: 多人在本地发展 做一些事情 promise 更多的事情 推送到暂存区 在暂存中测试新代码 投入生产 我们的登台服务器服务于许多
在预提交 Hook 中使用 $GIT_DIR 将返回 .git 目录的位置。即使它没有被明确设置为任何东西,在 pre-commit 钩子(Hook)中使用它仍然会返回你的位置。更新后,迁移到 Git
我想在 GNU Bash 中实现一个子模块来检查父存储库中的所有 GNU Bash 脚本,不包括所有子模块的 Bash 脚本。 我已经知道 git ls-files -z\*.bash 可以正常工作,
我已经阅读了很多帖子,这些帖子似乎让我接近了,但并没有完全达到我想要的效果。我有一台服务器。在上面,我有 3 个网站:www.domain.com、staging.domain.com 和 dev.d
我最近发现,设置 $GIT_DIR 环境变量或在命令中使用 --git-dir 标签可以让您指定一个 git 存储库来运行该命令in。这意味着您可以在目录树中有两个不同的 .git 目录,如果您愿意,
我编写了一个非常简单的“部署”脚本,作为我的裸 git 存储库中的 post-update Hook 运行。 变量如下 live domain = ~/mydomain.com sta
我有GIT_WORK_TREE设置为 .和 GIT_DIR设置为 .git .当我运行 git init --bare ,我收到以下错误: fatal: GIT_WORK_TREE (or --wor
我是一名优秀的程序员,十分优秀!