1

这是我目前使用的设置:

HOOK 1 我们将在 HUB 存储库上使用更新后挂钩。因此,当任何其他克隆向 HUB 推送时,HOOK get 被激活,它将根据 HEAD 指针位置访问相应的 WORKING DIRECTORY,无论是在 development 还是 master 上,它都会从那里:从集线器拉到开发分支或从集线器拉到主分支。

~/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

提前致谢。

4

1 回答 1

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

仅当您根本不开发时,这才是另一种选择/home/user/www/www/:它重置master HEADwww/www从 获取的那个hub
但对你来说不是这样,因为你有一个 post-commitwww/www可以推回。

我们可能已经把东西推给了主人,它说“一切都是最新的”,但事实并非如此。

这通常是因为DETACHED HEAD情况(您在没有 HEAD 的分支中提交)。检查git branch -a何时发生,并确保您在分支中。

于 2012-11-23T07:47:12.857 回答