我用下面的後收到鉤:在合併後的git-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 checkout -- *
在git目錄頂部 - 現在這個命令做我想要的:git status
顯示現在沒有區別了。
爲什麼這個命令git checkout -- "$GIT_TOP/*"
沒有在鉤子中工作,只能通過直接調用?如何在hook中運行這個命令?
P.S.
我發現git rev-parse --show-toplevel
從掛鉤內調用的路徑返回<myrepo>/.git
,但是從shell中它的值只是<myrepo>
。可能是這可以幫助解決問題。
你介意更新包含最終版本的問題? :)或者這個答案,然後將其標記爲分辨率? – simme 2015-08-12 13:42:15