【问题标题】:Server deployment using git hooks not working [closed]使用 git 挂钩的服务器部署不起作用 [关闭]
【发布时间】:2021-07-19 15:59:34
【问题描述】:

在本地机器和 ubuntu vps 服务器中使用 windows 10 时,我正在尝试使用 git 挂钩从本地到服务器进行自动部署。我将我的 ubuntu 服务器配置如下:

root@server:~# cd /var
root@server:~# mkdir repo && cd repo
root@server:~# mkdir site.git && cd site.git
root@server:~# git init --bare
root@server:~# cd hooks
root@server:~# touch post-receive && nano post-receive 

并修改post-receive如下

#!/bin/sh
git --work-tree=/var/www/site--git-dir=/var/repo/site.git checkout -f

之后在本地 pc repo 中我执行了以下命令

git remote add production ssh://root@example.com/var/repo/site.git

现在在本地仓库中,我有 3 个分支,例如 master, branch1, branch2。当我将回购推送到服务器时 git push production master 它将主分支推送到服务器。但是当我推送git push production branch1 时,它并没有推送branch1。在/var/www/site找到了master分支。

所以我有两个问题:

  1. 如何将其他分支(不是主分支)推送到服务器。
  2. 如果我需要从本地机器上删除生产分支并添加新的服务器目标,该怎么做?

提前致谢!

【问题讨论】:

    标签: git ubuntu server vps


    【解决方案1】:

    你可以试试这样的:

    #!/bin/bash
    TARGET="/var/www/site"
    GIT_DIR="/var/repo/site.git"
    
    while read oldrev newrev ref
    do
            echo "Ref $ref received. Deploying ${newrev} to production..."
            git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $newrev
    done
    

    如果在 checkout 命令上不指定分支或提交,将再次检出现有的 head。

    【讨论】:

    • 这很有效,让我很开心,谢谢!!期待第二个问题的答案。
    • 不确定我是否正确理解了第二个问题。
    • 通过运行git remote add production ssh://root@example.com/var/repo/site.git,我在本地机器上创建了一个生产分支,它将应用程序部署到服务器。现在,当我尝试通过git branch -d production 从本地计算机删除或修改此生产分支时,我遇到了一些麻烦。有什么具体的方法可以删除这个分支吗?
    • 通过运行git remote add production,您不会创建远程分支。您创建对远程存储库的添加引用。推送分支时会创建分支。
    • 那我怎样才能删除这个引用呢?
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2012-11-13
    相关资源
    最近更新 更多