Git更新后的Hook问题 - 有时master不会更新

时间:2012-11-22 15:21:54

标签: git githooks

这是我目前正在使用的设置:

  

HOOK 1我们将在HUB存储库中使用更新后挂钩。所以,什么时候   通过任何其他克隆对HUB进行推送,HOOK得到激活   它将根据HEAD指针放置来访问   对应工作目录,无论是开发还是掌握,和   它将从那里开始:从枢纽拉入开发分支OR   从枢纽拉到主分支。

~/private/repos/projectname_hub.git/hooks上创建一个名为post-update pico post-update的文件,并将以下内容放入其中:

#!/bin/sh

echo
echo "**** Pulling changes into Dev [Hub's post-update hook]"
echo

case " $1 " in
*'refs/heads/dev'*)
        cd /home/user/www/dev/ || exit
        unset GIT_DIR
        git pull hub dev
        echo
        echo "Dev was pulled"
        echo
        ;;
esac

case " $1 " in
*'refs/heads/master'*)
        cd /home/user/www/www/ || exit
        unset GIT_DIR
        git pull hub master
        echo
        echo "Master was pulled"
        echo
        ;;
esac

exec git-update-server-info
  

HOOK 2为了防止历史冲突,如果我们直接提交   生产服务器由于某种原因,每次主要提交   发生时,我们将那些承诺的更改推送到HUB。

~/www/www/.git/hooks上创建名为post-commit pico post-commit

的文件
#!/bin/sh

echo
echo "**** pushing changes to Hub [Prime's post-commit hook]"
echo

git push hub

通过上面的设置,有时候,我无法确切地知道什么时候,我们可能已经把事情推到主人那里说“一切都是最新的”,但事实并非如此。

显然所有添加和提交的文件。

所以,经过一些帮助后,我们最终发现问题出在Hook设置上。

我被告知,而不是使用post-update挂钩:git pull hub master我可以使用:

git fetch hub && git reset --hard hub/master

我的问题是: 任何人都可以提供必要的解释,为什么git pull hub dev有效,git pull hub master有时没有,这条线如何帮助我?

是的,我对git的使用很新,我希望不要盲目复制粘贴上面的内容,至少不要理解。如果有人可以放弃几行,那将非常感激。

更新: 当我做git branch -a时,这就是我得到的:

* master
  remotes/hub/dev
  remotes/hub/master

提前致谢。

1 个答案:

答案 0 :(得分:1)

git fetch hub && git reset --hard hub/master

只有在/home/user/www/www/上根本不进行开发时,这是一种替代选择:它会将master HEAD的{​​{1}}重置为从www/www获取的{。}}。 > 但对你来说情况并非如此,因为你在hub上进行了一次提交后推回。

  

我们可能已经把事情推到主人那里说“一切都是最新的”,但事实并非如此。

通常是因为DETACHED HEAD情况(你在没有HEAD的分支中提交)。发生这种情况时检查www/www,并确保你在分支机构。