我想知道,如果有可能找出谁将新分支推送到GitHub上的远程存储库中?
问题是分支是通过从一个开发人员的现有主分支提交中检出来创建的,所以当我在“代码”选项卡中选择新分支时,我看到他创作了最后一个提交(在主分支),但实际上他没有推新分支。
为了清楚我的情况,这里是我的意思的例证
master
|
--*---*----*-- ........... --*
|
new branch
答案 0 :(得分:2)
不,Git本身并不保存任何关于“谁”推送提交的信息,因为在推送时验证和识别自己的系统超出了Git的范围。
相反,您必须检查服务器日志,了解推送时发生的情况。如果通过SSH进行推送,请检查您的syslog;如果它们通过HTTP发生,请检查服务器的访问日志。
当然,你可以在你的中央存储库中创建钩子脚本,用于根据你的设置的识别概念记录推送,但我猜这个问题的关键在于你想知道这个案例中的历史事件而不是证明未来。
答案 1 :(得分:2)
您应该可以通过GitHub Events API访问此信息。
GET /repos/:owner/:repo/events
https://api.github.com/users/libgit2/events
这将返回JSON事件数组。为了发现推送到此存储库的人员,您必须过滤这些事件,并仅检查type
属性等于"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"
}
}
答案 2 :(得分:0)
试
git log remotename/branchname
这将显示该存储库中给定远程分支的日志。