git 如何在一个提交被压缩后 checkout 它?

fhity93d  于 2023-01-19  发布在  Git
关注(0)|答案(1)|浏览(169)

在合并过程中,我同时使用Delete source branch when merge request is acceptedSquash commits when merge request is accepted选项。

Gitlab的工作做得很完美:它将提交压缩到单个分支并将其合并到目标分支。

但它也保留原始提交-您可以在合并请求页面的Commits选项卡中看到它们:

我希望能够 checkout 这些提交,但是在新克隆的仓库中,git无法通过哈希找到它们:

$ git checkout c8ad8edf
error: pathspec 'c8ad8edf' did not match any file(s) known to git

我认为这是因为git clone只获取初始提交后可以到达的提交,但是GitLab保存了这些信息-我可以在浏览器中查看任何提交的信息:

那么我该如何 checkout 这些提交呢?

2hh7jdfx

2hh7jdfx1#

您可以获取refs/merge-requests/$id/head ref,其中$id是合并请求的数字ID(在您的示例中是3,来自屏幕截图):请参阅通过head ref在本地 checkout 合并请求。注意,在GitLab 13.4及更新版本中,该ref会在MR合并或关闭14天后删除。

git fetch origin refs/merge-requests/3/head
git checkout FETCH_HEAD

相关问题