使用 git 挂钩的服务器部署不起作用
Server deployment using git hooks not working
在本地计算机和 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
它将 master 分支推送到服务器。但是当我推送 git push production branch1
时,它并没有推送 branch1。在 /var/www/site
我找到了 master 分支。
所以我有两个问题:
- 如何将其他分支(不是主分支)推送到服务器。
- 如果我需要从本地计算机删除生产分支并添加新的服务器目标,该怎么做?
提前致谢!
您可以尝试类似的方法:
#!/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
不指定分支或在检出命令上提交将再次检出现有头。
在本地计算机和 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
它将 master 分支推送到服务器。但是当我推送 git push production branch1
时,它并没有推送 branch1。在 /var/www/site
我找到了 master 分支。
所以我有两个问题:
- 如何将其他分支(不是主分支)推送到服务器。
- 如果我需要从本地计算机删除生产分支并添加新的服务器目标,该怎么做?
提前致谢!
您可以尝试类似的方法:
#!/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
不指定分支或在检出命令上提交将再次检出现有头。