GitHub 是否提供 repo 的最新 pull/fetch/clone 的时间(至少对于那些对 repo 具有写访问权限的人)?
当然,对这些信息的兴趣来自于想要衡量git push -f
在 repo 上做一个基本上会覆盖最后几个提交的安全性:如果自最早的提交以来没有发生拉/取/克隆 - be-overwritten 被推送到 GitHub,那么覆盖可能就OK了……
也许一个例子可以澄清我的问题。为简单起见,我们假设只有一个本地分支 ( master
) 和一个远程分支 ( origin/master
)。(IOW,远程仓库只有一个分支,我正在用我们唯一的本地分支跟踪它。)
首先考虑一个完全本地的场景:我做了一个提交,不久之后意识到这个提交有问题。在这种情况下,我只需使用正确的提交覆盖git commit --amend ...
此提交。
现在想象完全相同的场景,不同之处在于,在注意到提交问题之前,我将错误提交推送到远程 (GitHub) 存储库。
如果我是这个 repo 的唯一用户,那么我可以像以前一样简单地覆盖本地提交,然后使用git push -f ...
覆盖远程(GitHub)repo 中的错误提交。
但是,如果我不是这个 repo 的唯一用户,那么上述过程是有问题的,因为在我推送错误提交之后但在我覆盖之前,其他用户可能已经从远程 (GitHub) repo 克隆或获取远程仓库中的错误提交。
将这种可能性降到最低的一种方法是检查自我将错误提交推送到远程存储库以来在远程存储库上执行的所有拉取、获取和克隆操作的记录。如果这个记录至少显示了一个这样的操作,那么这意味着我们正好遇到了上一段中描述的问题场景。
另一方面,如果记录显示没有这样的操作,那么我仍然有希望覆盖远程 repo 中的错误提交,而不会导致前面描述的问题场景。(当然,这是一个竞争条件,所以没有 100% 的保证。)
然而,所有这一切都取决于远程仓库上此类拉取、获取和克隆操作记录的可用性。我的问题是 GitHub 是否提供这样的记录,至少对于那些对 repo 有写访问权限的人。