这是我目前使用的设置:
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
提前致谢。