如何查看强制推送的git历史记录?

How to check git history for push with force?

在我们的项目中,我们使用带有 git 存储库的 TFS 服务器——我们看到一些奇怪的行为,在一些 commit/push 某人覆盖了其他人的作品之后,但他为此只使用 VS,而不是命令行。我怀疑 VS 使用强制选项来覆盖更改,但我没有证明这一点。有什么方法可以检查日志以查看发生了什么以及更改被覆盖的原因吗?

TFS / VSTS 能够显示分支的 "branch updates"。根据您使用的版本,这应该在网络 UI 上列为 "Branch Updates" 或 "Pushes" 选项卡。我没有关于此页面的 link 文档,但希望这足以找到它。

发生这种情况的另一种可能性是,客户端上的更改合并方式存在问题。由于 Git 如何简化历史,它可以让它看起来好像分支中从未存在过更改。这是关于此主题的博客 post:

Git lost my changes: Taking a look at Git's history simplification

这似乎与 TFS 服务器托管 Git 存储库无关,与本地存储库更相关。您可以使用 git reflog 命令来检查选项。

Reference logs, or "reflogs", record when the tips of branches and other references were updated in the local repository. Reflogs are useful in various Git commands, to specify the old value of a reference.

更多详情请参考官方tutorial