1

我想知道,是否有可能找出谁将新分支推送到 GitHub 上的远程存储库中?

问题是分支是通过从一个开发人员所做的现有主分支提交中签出来创建的,所以当我在“代码”选项卡中选择新分支时,我看到他创作了最后一个提交(在主分支中) ,但实际上他并没有推送新的分支。

为了澄清我的情况,这里是我的意思的说明

                                      master
                                        |
  --*---*----*--      ...........     --*
                                        |
                                    new branch
4

3 回答 3

2

不,Git 本身不会保存有关“谁”推送提交的任何信息,因为推送时用于验证和识别自己的系统超出了 Git 的范围。

相反,您必须检查服务器日志以了解推送时发生的情况。如果通过 SSH 进行推送,请检查您的系统日志;如果它们通过 HTTP 发生,请检查服务器的访问日志。

当然,您可以根据设置的识别概念在中央存储库中创建用于记录推送的钩子脚本,但我猜这个问题的重点是您想在这种情况下找出历史事件,而不是为未来打样。

于 2013-09-27T07:24:17.493 回答
2

您应该能够通过 GitHub Events API 访问此信息。

  • 句法: GET /repos/:owner/:repo/events
  • 例子: https://api.github.com/users/libgit2/events

这将返回一个 JSON 事件数组。为了发现谁推送到此存储库,您必须过滤这些事件并仅检查那些type属性为 equals的事件"WatchEvent"。该actor属性将包含有关推送器的详细信息。

下面是这样一个示例PushEvent

{
   id:"1842109394",
   type:"PushEvent",
   actor:{
      id:39902,
      login:"ben",
      gravatar_id:"0d410939c9e80980cf0430772567dfb4",
      url:"https://api.github.com/users/ben",
      avatar_url:"https://2.gravatar.com/avatar/0d410939c9e80980cf0430772567dfb4?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"
   },
   repo:{
      id:901662,
      name:"libgit2/libgit2",
      url:"https://api.github.com/repos/libgit2/libgit2"
   },
   payload:{
      push_id:235346159,
      size:1,
      distinct_size:1,
      ref:"refs/heads/redir-refactor",
      head:"b59344bf83049a5639c32ab52efceea2eec9484b",
      before:"256961e45d574ace62a7a7d13b697aa05e8a9466",
      commits:[
         {
            sha:"b59344bf83049a5639c32ab52efceea2eec9484b",
            author:{
               email:"bs@github.com",
               name:"Ben Straub"
            },
            message:"Tighten up url-connection utility",
            distinct:true,
            url:"https://api.github.com/repos/libgit2/libgit2/commits/b59344bf83049a5639c32ab52efceea2eec9484b"
         }
      ]
   },
   public:true,
   created_at:"2013-09-26T23:56:59Z",
   org:{
      id:394745,
      login:"libgit2",
      gravatar_id:"1c56acccc41c591705dc92da5f6ab603",
      url:"https://api.github.com/orgs/libgit2",
      avatar_url:"https://1.gravatar.com/avatar/1c56acccc41c591705dc92da5f6ab603?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png"
   }
}
于 2013-09-27T08:17:40.880 回答
0

尝试

git log remotename/branchname

这将显示该存储库中给定远程分支的日志。

于 2013-09-27T07:12:28.280 回答