首页 > 解决方案 > git:在强制推送之前恢复远程更改

问题描述

考虑某个 repo 中的分支 XYZ。我的本地 XYZ 与远程同步。

一位开发人员将一些提交推送到分支。我在 XYZ 上进行了一些本地更改,而没有先拉动其他开发人员的提交,然后强制推送(我不得不强制推送,因为我编辑了一些以前的提交)。

所以现在,其他开发人员在远程 XYZ 上的提交被我的 XYZ 的 git 历史记录覆盖了。

我怎样才能收回他们的承诺?


编辑:

我面临的问题是他们的提交从未在我的本地分支上,所以我不能使用reflogor checkout。我知道我可以在远程仓库中看到他们的更改,但我想知道如何将这些提交带回历史。

更准确地说,我想知道是否有一种方法可以将他们的提交“插入”回历史,然后应用我的更改(以类似的方式rebase工作 - 远程提交被带到本地仓库和然后在顶部应用本地提交)。


我仍然可以在远程仓库中看到他们提交的更改,所以我猜会发生这样的事情:

假设我的本地 XYZ 和远程 XYZ 有提交A-B-C-D,即它们同步到D. 然后,其他开发人员推送更多提交,远程变为A-B-C-D-E-F即头指向 F。然后,我在本地 XYZ 中进行更改以使其完成A-B-C-D-G-H-I,然后强制推送。在远程 XYZ 上,A-B-C-D-E-F现在被 覆盖A-B-C-D-G-H-I,即头部现在指向I,即使E-F仍然存在。那么有什么方法可以让我访问E-F吗?

在本地,使用 git,我会搜索reflog并使用checkout. 是否有与此等效的东西来访问远程仓库上的提交?

标签: git

解决方案


推荐阅读