检索Git推送历史记录?

3
Git是否记录提交到远程的历史记录?
我发现在Microsoft VSTS中,我们可以查看Git存储库的推送历史记录以及与每个推送相关的提交。它甚至显示了旧的、已过时的提交,这些提交应该由于后来的强制推送而被重写了。这些信息是VSTS特别提供的额外信息,还是Git内置的功能?

能否通过一个pre-push钩子自动化某些标签呢?已经打好标签的提交确实受到了垃圾回收和历史重写的保护。值得在ref/tags中检查一下吧?如果是这种情况,VSTS只需保留对标签本身的内部引用就可以了。 - Romain Valeri
https://dev59.com/ZaLia4cB1Zd3GeqPcQTh - cmbuckley
2
Git本身不记录推送操作 - 从技术上讲,就Git本身而言,这些只是通过ssh或Web服务器运行的“git receive-pack”调用。各种插件可能会记录。 - torek
@ohitsderrick,你这边的问题解决了吗? - Jack Zhai
@JackZhai-MSFT,我认为下面Daniel的回答解释了我所看到的关于git gc未被实现的问题。我在另一个帖子中读到了这个答案,它说在本地克隆上运行git gc,删除VSTS上的整个远程仓库,然后将最近清理过的本地仓库推送回去是清理过时对象的唯一方法。 - derrick
2个回答

2

如果您正在谈论下面截图中远程侧的推送历史记录,我不确定是否完全理解了您的意思。

enter image description here

对于本地存储库,您可以查看此主题:

实际上,当您执行git reflog expire --expire=now --all和git gc --prune=now时,将删除dangling commits。您可以通过git fsck --full进行双重检查。如果输出未显示提交,则表示没有悬挂提交。

但是,您无法为远程git存储库执行任何git命令,这可能是由于此问题引起的,正如Daniel上面提到的:

我们向VSTS推出了提交可达性位图索引,并删除了下面提到的克隆欺骗。克隆将不再下载不可访问的对象!我们仍然没有真正的服务器级别的git gc,但现在克隆大小会更小。

TFS on-prem 将在v.Next(不是任何TFS 2017更新,而是下一个主要版本)中获得这些更改。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接