git - 在 git post-receive hook 中 merge

标签 git githooks

我使用以下接收后 Hook :

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

想法很清楚:我希望当前分支与推送的分支 merge 。

  • 然后我执行:git status它告诉我本地树与分支不同!

  • 比我执行的更多git checkout -- *在 git dir 的顶部 - 现在这个命令做我想做的事:git status现在显示没有差异了。

为什么这个命令git checkout -- "$GIT_TOP/*"没有 Hook 工作,只能通过直接调用工作?如何在钩子(Hook)中运行此命令?

附言

我发现 git rev-parse --show-toplevel从钩子(Hook)内调用返回 <myrepo>/.git路径,但从 shell 来看它的值只是 <myrepo> .也许这有助于解决问题。

最佳答案

好的,现在可以使用了。多思考少抄袭。

export GIT_WORK_TREE=`pwd`
export GIT_DIR=`pwd`/.git

保罗

关于git - 在 git post-receive hook 中 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11375924/

相关文章:

git - Git 中添加但未提交的删除文件能否恢复?

git - 将 github(企业)repo 配置为仅允许快进提交/PR merge ?

git - 如何在 git 中获取或 pull 命令后立即执行命令?

git - 如何在不同对应的本地分支package.json中使用单独的git分支作为npm包依赖?

git - 与使用 Github 的人共享一个 git repo 分支的好方法是什么?

git - Visual Studio Code SSH 推和 pull 可以在命令行中工作,但不能使用推和 pull 按钮

Git无法连接Gitlab,SSH验证错误

git - 可以在预提交的git hook中重新登台文件吗?

git - git pre-commit hook 可以将文件添加到 repo 中吗?

git - 将 Git Hook 放入存储库