gpt4 book ai didi

Git:试图回溯已删除分支上的压缩提交 - 这可能吗?

转载 作者:行者123 更新时间:2023-12-04 01:03:47 25 4
gpt4 key购买 nike

在过去 6 周的某个时候,代码库中出现了一个问题。我已经确定是哪个分支引入了它(以及该分支的头/尾提交),但我现在想开始跟踪该分支上的各个提交以确定确切原因。

我的问题是:

  1. 有问题的分支在 merge 到 master 后被构建服务器删除
  2. 在 merge 之前,提交被压缩(由构建服务器)。
  3. 我无权访问最初提交和推送提交的本地环境。

我可以看到我们构建服务器上现在删除的分支的提交历史,但是如果我尝试在本地 check out 其中一个分支,我只会得到错误

error: pathspec '<commit-id>' did not match any file(s) known to git

构建服务器也很乐意向我展示每次提交的差异,这意味着它们仍在 git 某处 中(或者构建服务器已经缓存了它们,但这似乎不太可能)。

我看到了对 git reflog 的引用,但这似乎只适用于本地 存储库历史记录(或者,更有可能的是,我没能找到一些高级的它提供的选项)。

有没有办法做到这一点? TIA。

最佳答案

I can see the commit history for the now-deleted branch on our build-server...

登录到构建服务器,并从压缩之前的最新提交 ID 创建一个新分支并推送它:

git branch investigation-branch 1234abcd # use the last commit id before the squash
git push origin investigation-branch # assuming your remote is "origin"

现在从您的本地计算机获取,您应该能够看到该分支,因为它是以前的。如果您愿意,可以在完成调查后简单地删除 Remote 上的分支。

注意:如果您不想登录构建服务器,另一台机器也可能有提交。可能仍然有它们的地方是:

  1. 推送提交的原始机器。 (已经排除了你不能访问这个。)
  2. 构建服务器。 (确认。)
  3. 在那些提交存在于分支并且尚未被垃圾回收的时间窗口内获取 repo 的任何机器。所需的提交在被压缩之前在分支上存在的时间越长,它们被另一台机器获取的可能性就越大。请注意,孤立提交的默认垃圾收集时间为 90 天,因此 6 周前正好在默认时间范围内,尽管可以手动运行命令来清理本地存储库并尽快清除那些孤立提交。
  4. 您是否使用集中存储库?如果是,它应该仍然有未引用提交的副本,并且可能有一种访问它们的机制。有些工具甚至允许您直接从 UI 从任何历史提交创建一个新分支。这基本上可以实现您的目标,而无需手动登录服务器。

关于Git:试图回溯已删除分支上的压缩提交 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67215443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com