【问题标题】:git pre-push hook leaves local branch ahead of origin by 1 commitgit pre-push 钩子在原点之前离开本地分支 1 次提交
【发布时间】:2013-11-27 15:37:21
【问题描述】:

我正在尝试在执行常规git push 时提交一个自动“构建”文件。到目前为止,我已尝试将以下内容添加到我的 git pre-push 钩子中:

git add build.js
git commit -m "automatic build file"

从某种意义上说,推送通过了,我看到了预期的 2 个提交:一个是我之前提交的任何内容,另一个是来自钩子的一个:“自动构建文件”。

问题是当我在推送后立即执行git status 时,我看到以下内容:

Your branch is ahead of 'origin/master' by 1 commit.

尽管这有点奇怪(因为当我 git checkout staginggit merge master 时,我也看到了自动提交)。当我移除钩子并在那之后在 master 中执行 git push 时,我认为没有任何变化 - 它只是修复了我的本地分支并且消息消失了。

有没有更合适的方法在推送之前潜入自动提交?或者如果我已经以正确的方式进行操作,我该如何消除该消息?

【问题讨论】:

    标签: git githooks


    【解决方案1】:

    这可能是 git pre-push 钩子实现方式的副作用:
    commit ec55559

    在生成额外提交之前计算将被推送的提交列表。
    因此,它不会推动您的额外提交,并且您的“git checkout staging/git merge”并不能证明任何事情,因为它是本地操作。
    这意味着您的本地分支确实领先于上游分支的一次提交。

    请注意,您可以使用别名来调用:

    git push
    git push --no-verify
    

    第二次推送不会调用 pre-push 钩子,并推送第一次创建的额外提交。

    【讨论】:

    • 感谢您的回答。这是有道理的。
    猜你喜欢
    • 2013-12-01
    • 2014-02-15
    • 2016-01-17
    • 2021-08-12
    • 2020-05-07
    • 2015-11-06
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多