git - 改变并不反映推向主站点

时间:2016-07-11 10:49:22

标签: git

我们正在使用多个开发站点,一旦我们对开发站点进行了更改,我们就会将更改推送到主站点。

enter image description here

使用以下命令推送更改后,我的更改未反映出来:

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

2 个答案:

答案 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