我们正在使用多个开发站点,一旦我们对开发站点进行了更改,我们就会将更改推送到主站点。
使用以下命令推送更改后,我的更改未反映出来:
git push staging development
修改
我的网站网站1 ,我推送到网站4 。我完成的更改在站点1中工作正常,但它没有反映在site4中。即使我打开的代码也没有移动到site4。
例如:如果我更改了form.html文件中的一些代码,那么该代码不会移动到网站4。 我添加了一些标准文本,那些也没有复制到site4。
编辑2 - git config.file
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "staging"]
url = gituser@139.59.10.75:/var/www/sitename.repo
fetch = +refs/heads/*:refs/remotes/staging/*
[branch "development"]
remote = staging
merge = refs/heads/development
答案 0 :(得分:1)
即使您推送到存储库,也没有更新HEAD指针。你需要在遥控器上结账或重置才能做到这一点。这有点像你刚刚取了一个。您应该考虑设置git hook for deployment来自动执行此任务。
答案 1 :(得分:1)
因此,您将新提交推送到staging
(远程)development
(分支),之后您需要将现有代码本身更新为新更改。您可能需要查看post-receive才能实现此目的。
在整个过程完成后,后接收挂钩运行 可用于更新其他服务或通知用户。需要的 与预接收挂钩相同的stdin数据。例子包括发电子邮件 列表,通知持续集成服务器或更新 故障单跟踪系统 - 您甚至可以解析提交消息以查看 如果需要打开,修改或关闭任何票证。这个脚本 无法停止推送过程,但客户端直到没有断开连接 它已经完成,所以如果你试图做任何可能的事情要小心 需要很长时间。
这里是post-receive hook的小例子
# --- Main loop
oldrev=$(git rev-parse $1)
newrev=$(git rev-parse $2)
refname="$3"
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "development" = "$branch" ]; then
echo 'branch:development';
echo 'checkout site code';
GIT_WORK_TREE=/Path/to/your/site/ git checkout -f
fi
done
或更简单
# --- Main loop
echo 'checkout site code';
GIT_WORK_TREE=/Path/to/your/site/ git checkout -f