You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Apache2虚拟主机指向特定Git分支并解决实时生效问题

问题分析

你当前的问题根源在于Apache直接指向了Git仓库的工作目录——Git仓库的工作目录会实时反映当前checkout分支的所有文件(包括未提交的修改),所以你在VSCode里保存的任何改动都会立刻被Apache读取并展示给用户。切换分支时工作目录的文件会被替换,自然也会直接影响浏览器内容。直接指向/var/www/myRepository/master无效是因为Git分支不是目录,仓库里不存在这个路径。

解决方案:用Git Worktree分离开发与发布目录

通过git worktree可以创建一个独立的目录,专门固定checkout到master分支,让Apache指向这个目录。开发分支的修改只会留在你的原仓库工作目录,只有当你主动将代码合并到master并更新发布目录时,改动才会对外展示。

步骤1:创建发布专用目录

在服务器上创建一个独立的目录,用于存放master分支的代码:

mkdir /var/www/myRepository-master

步骤2:关联Git仓库与发布目录

进入你的原Git仓库目录,执行以下命令将新目录关联到master分支:

cd /var/www/myRepository
git worktree add /var/www/myRepository-master master

执行后,/var/www/myRepository-master目录会自动checkout到master分支,且与原仓库共享Git数据。

步骤3:修改Apache配置

将Apache虚拟主机的DocumentRoot改为新的发布目录,修改后的配置如下:

<VirtualHost *:443>
    ServerName example.com.br
    ServerAdmin myemailo@gmail.com

    DocumentRoot /var/www/myRepository-master

    <Directory /var/www/myRepository-master/>
        Options -Indexes -FollowSymLinks
        AllowOverride All
    </Directory>

    <DirectoryMatch "/var/www/myRepository-master/(\.|protected|themes/\w+/views|uploads/file)">
        Order Deny,Allow
        Deny from all
    </DirectoryMatch>

    <FilesMatch "^\.">
        Order Deny,Allow
        Deny from all
    </FilesMatch>
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com.br
    DocumentRoot /var/www/myRepository-master
</VirtualHost>

步骤4:重启Apache服务

使配置生效:

# Debian/Ubuntu系统
sudo systemctl restart apache2

# RHEL/CentOS系统
sudo systemctl restart httpd

步骤5:后续维护流程

当你在开发分支完成工作后,按以下步骤更新对外展示的内容:

  1. 将开发分支的代码合并到master分支(本地仓库操作):
    git checkout master
    git merge your-dev-branch
    
  2. 更新发布目录的代码:
    cd /var/www/myRepository-master
    git pull
    
    (因为发布目录与原仓库共享Git数据,git pull会直接同步最新的master分支内容)

权限检查

确保Apache用户(通常是www-data)有读取发布目录的权限:

sudo chown -R www-data:www-data /var/www/myRepository-master
sudo chmod -R 755 /var/www/myRepository-master

内容的提问来源于stack exchange,提问作者Rafael Medrano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:44:58