【问题标题】:Git checkout map destinationGit结帐地图目的地
【发布时间】:2015-09-14 15:32:29
【问题描述】:

我使用 git hook "post-update" 部署到我的服务器。 它挂钩调用:“git --work-tree=/folderdestination/ checkout -f master”,它工作正常

它不能改变 git repo。但我需要将文件部署在工作树结帐/的项目文件夹 www 中。

例如: www/index.php(我的 git)--> /index.php(我的服务器)

【问题讨论】:

    标签: git


    【解决方案1】:

    您可以通过稀疏结帐来实现此目的。在远程服务器上运行它,在裸仓库的目录中:

    git config core.sparsecheckout true
    echo "www/*" >> info/sparse-checkout
    

    在您的更新后挂钩中对选定的目的地(如您已有的目的地)进行结帐:

    git --work-tree=/ checkout -f master
    mv /www/* /                      
    rm -rf /www 
    

    假设您有权写入根目录,这将在每次推送时将您的 www 的内容放在远程服务器的根目录中。

    【讨论】:

    • jordan,很有趣,但这只是检查 info/sparse-checkout 中列出的文件。不要更改目标路径。它将 repo 的文件夹 www 放在服务器的 / 中。我需要将文件放在 www 文件夹 repo 上 / 没有 www 文件夹。我需要将文件映射到结帐及其目标文件夹
    • @David,对不起,我错过了包括我的钩子的最后一部分。我已经更新了答案。
    • 另一种可能性是在临时目录中进行结帐,然后将我需要的文件与 rsync 同步到正确的路径中。
    猜你喜欢
    • 2015-11-09
    • 2011-04-08
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 2020-10-10
    • 2023-02-19
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多