【发布时间】:2012-07-07 14:40:22
【问题描述】:
我使用以下 post-receive 钩子:
GIT_TOP=`git rev-parse --show-toplevel`
while read oldrev newrev refname
do
echo "=== $oldrev"
echo "=== $newrev"
echo "=== $refname"
echo "=== 01. checkout -- $GIT_TOP/*"
git checkout -- "$GIT_TOP/*"
echo "=== 02. merging $refname"
git merge $refname
echo "=== 03. checkout -- $GIT_TOP/*"
git checkout -- "$GIT_TOP/*"
done
这个想法很清楚:我希望将当前分支与推送的分支合并。
然后我执行:
git status,它显示我的本地树与分支不同!比我在 git 目录的顶部执行更多的
git checkout -- *- 现在这个命令做我想要的:git status现在不再显示任何差异。
为什么这个命令git checkout -- "$GIT_TOP/*" 在钩子中不起作用,只能通过直接调用起作用?如何在钩子中运行这个命令?
附言
我发现从钩子中调用的git rev-parse --show-toplevel 返回<myrepo>/.git 路径,但从shell 中它的值只是<myrepo>。也许这可以帮助解决问题。
【问题讨论】: