下面是我目前正在使用的设置:
我们将在集线器存储库上使用一个更新后的钩子。因此,当通过任何其他克隆推到集线器时,钩子会被激活,并且根据头部指针的位置,它将访问相应的工作目录,无论是在开发上还是在主目录上,它也会从那里访问:从集线器到开发分支,或者从集线器到主分支。
在~/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钩子2以防止历史冲突,如果我们出于某种原因直接在生产服务器上提交,每次发生主提交时,我们都会将这些提交的更改推送到中心。
在~/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提前谢谢。
发布于 2012-11-23 07:47:12
git fetch hub && git reset --hard hub/master如果您根本没有在/home/user/www/www/上进行开发,这是另一种选择:它将www/www的master HEAD重置为从hub获取的。
但对你来说不是这样,因为你在www/www上有一个后提交来回推。
我们可能把事情推给主人,上面写着“一切都是最新的”,但事实并非如此。
这通常是由于DETACHED HEAD的情况(在没有头的分支中提交)。如果发生这种情况,请检查git branch -a,并确保您在分支中。
https://stackoverflow.com/questions/13515748
复制相似问题