这是我目前正在使用的设置:
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
提前致谢。
答案 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
,并确保你在分支机构。