使用Git获取所有推送的列表

使用Git获取所有推送的列表,git,Git,如何在git中获取与特定远程设备之间的所有push命令列表 对于我的案例,可以在远程或本地回购上运行 对于奖励积分,我如何获得所有成功的推送命令的列表?此方法只会为您提供成功的推送,但可能对您仍然有用: 当您推送到远程跟踪分支中与其中一个远程跟踪分支对应的分支,并且推送成功时,将更新远程跟踪分支。在从存储库克隆的默认情况下,这通常意味着成功推送到远程origin中的master将更新远程跟踪分支origin/master。对origin/master的更改记录在reflog中,因此您可以通过以下

如何在
git
中获取与特定远程设备之间的所有
push
命令列表

对于我的案例,可以在远程或本地回购上运行


对于奖励积分,我如何获得所有成功的推送命令的列表?

此方法只会为您提供成功的推送,但可能对您仍然有用:

当您推送到远程跟踪分支中与其中一个远程跟踪分支对应的分支,并且推送成功时,将更新远程跟踪分支。在从存储库克隆的默认情况下,这通常意味着成功推送到远程
origin
中的
master
将更新远程跟踪分支
origin/master
。对
origin/master
的更改记录在reflog中,因此您可以通过以下方式找到成功的推送:

 git reflog show origin/master
例如,在我的一个存储库中,您将看到:

17f2303 refs/remotes/origin/master@{0}: fetch origin: fast-forward
dd7e0ac refs/remotes/origin/master@{1}: fetch origin: fast-forward
1788ffe refs/remotes/origin/master@{2}: fetch origin: fast-forward
9763bbc refs/remotes/origin/master@{3}: fetch origin: fast-forward
058d0d6 refs/remotes/origin/master@{4}: fetch origin: fast-forward
921f0f1 refs/remotes/origin/master@{5}: fetch origin: fast-forward
8483afd refs/remotes/origin/master@{6}: update by push
18d527f refs/remotes/origin/master@{7}: update by push
1a0fc4a refs/remotes/origin/master@{8}: fetch origin: fast-forward
b19afc6 refs/remotes/origin/master@{9}: fetch origin: fast-forward
9253285 refs/remotes/origin/master@{10}: fetch origin: fast-forward
dfa664f refs/remotes/origin/master@{11}: fetch origin: fast-forward
30ee7c0 refs/remotes/origin/master@{12}: update by push
ad11e76 refs/remotes/origin/master@{13}: fetch origin: fast-forward
c337975 refs/remotes/origin/master@{14}: update by push
1ff03bd refs/remotes/origin/master@{15}: update by push
7fb1c8d refs/remotes/origin/master@{16}: fetch origin: fast-forward
452c8fa refs/remotes/origin/master@{17}: fetch origin: fast-forward
6c79a16 refs/remotes/origin/master@{18}: update by push
11d9c4a refs/remotes/origin/master@{19}: fetch origin: fast-forward
例如,您可以从中看出,我最近的推送更新了
origin/master
18d527f
8483afd


如果您需要依赖此选项,则需要在默认时间(90天IIRC)后停止reflog过期。

Tortoise Git for Windows具有“Show reflog”选项,其中包括提交日期。

完美!非常感谢。FWIW,我的reflog显示了过去9个月的条目,自从我第一次安装以来,我没有做任何事情来影响它的行为。@Clayton:这可能只是意味着你还没有使用
gc--auto
触发器;它将比默认值提前90天过期。如果您想让事情保持这种状态,只需将
gc.reflogExpire
设置为
never
(或更大的值)。对于git学习者:要将所有本地回购的reflog设置为永不过期,请执行以下操作:
git config--global gc.reflogExpire never