【问题标题】:When a commit was pushed into a remote Git Repo当提交被推送到远程 Git 存储库时
【发布时间】:2014-01-25 15:58:24
【问题描述】:

有没有办法显示何时特定的提交被推送到远程仓库?换句话说,我知道谁做了更改(以及何时提交),但我不知道它何时被推送到我在 heroku 中的生产环境(注意:heroku 只是使用 git push 来部署)

理想情况下,应该是这样的:

$ git remote myprodrepo show 201421b78ae73a21bc6045a78b4b5db5c54697e7

我可以看到该提交实际上何时被推送到该存储库中。

注意:上面的语法不起作用,只是为了展示我想要完成的内容。

(我希望这个问题有意义 - 如果没有,请提出问题。)

【问题讨论】:

    标签: git heroku


    【解决方案1】:

    VonC 是正确的,Git 本身不跟踪此信息,但在 Heroku 上,您应该能够使用 heroku releases 命令获取此信息。

    链接页面的示例输出:

    Rel   Change                          By                    When
    v52   Config add AWS_S3_KEY           jim@example.com       5 minutes ago
    v51   Deploy de63889                  stephan@example.com   7 minutes ago
    v50   Deploy 7c35f77                  stephan@example.com   3 hours ago
    v49   Rollback to v46                 joe@example.com       2010-09-12 15:32:17 -0700
    

    请注意,v51 显示 de63889 何时部署到 Heroku。

    然后您可以使用例如heroku releases:info v51 来获取有关此版本的详细信息:

    === Release v51
    Change:      Deploy de63889
    By:          jim@example.com
    When:        7 minutes ago
    Addons:      deployhooks:email, releases:advanced
    Config:      MY_CONFIG_VAR => 42
                 RACK_ENV      => production
    

    【讨论】:

    • 感谢您的回复。是的;我确实知道这是可用的,但是它与分支等有关,因此很难判断何时提交实际上最终在生产中结束。换句话说,一个版本在被推送之前可能由 20 多个提交组成(它可能是该系列中的第 9 个存在错误)。
    【解决方案2】:

    不,Git 不会为这些操作记录任何日志。

    Gitolite 这样的中间authorization layer 可以保持这样的记录,但这可能不适合您当前的设置。

    在 heroku 旁边,Chris 发布了suggested,在您的配置中,获取所有这些操作(不仅仅是推送)的最新记录的一种纯 git 方式是 suggested here远程 git 仓库:

    # required for a bare repo
    git config core.logAllRefUpdates true
    
    git reflog --date=local master
    

    【讨论】:

    • 你是对的。这不会解决我的问题,但看起来是非常好的信息。谢谢你的回复。
    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 2013-11-28
    • 2018-06-24
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多