git - git:在强制推送之前恢复远程更改
问题描述
考虑某个 repo 中的分支 XYZ。我的本地 XYZ 与远程同步。
一位开发人员将一些提交推送到分支。我在 XYZ 上进行了一些本地更改,而没有先拉动其他开发人员的提交,然后强制推送(我不得不强制推送,因为我编辑了一些以前的提交)。
所以现在,其他开发人员在远程 XYZ 上的提交被我的 XYZ 的 git 历史记录覆盖了。
我怎样才能收回他们的承诺?
编辑:
我面临的问题是他们的提交从未在我的本地分支上,所以我不能使用reflog
or 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
. 是否有与此等效的东西来访问远程仓库上的提交?
解决方案
推荐阅读
- docker - 如何检查正在运行的 Docker 容器的 fs
- java - 在jsp中分离Java和HTML?
- python - 为什么 tweepy.Cursor 不应该返回空文件
- string - 如何用 Python 3 替换文本文件中字符串的所有实例?
- python - 如何按表示为字符串的日期时间正确排序字典?
- python - MLP 分类器神经元权重
- regex - 正则表达式 - 仅在没有分号时替换换行符
- c# - 使用 C# 赋值会创建对象的新副本还是使其成为别名?
- udp - 绑定套接字请求给出 EADDRNOTAVAIL
- javascript - 分离轴定理实现总是返回真。我究竟做错了什么?