我已经创建了一个合并(到“master”分支),现在位于 Bitbucket 存储库上。长话短说:我需要撤消该合并。
我知道您可以在 Github 站点本身执行此操作,但 Bitbucket 没有该功能。我不清楚如何使用 Git 做到这一点而不造成混乱。
您需要首先将存储库克隆到本地系统上(您可以从 Bitbucket 存储库的“概述”页面获取 SSH 或 HTTPS 格式的存储库 URL):
git clone [email protected]:my/repo.git
-or-
git clone https://[email protected]/my/repo.git
git checkout master
..然后恢复最近的提交。首先列出可用的提交:
git log
..然后选择合并之前的提交:
git reset --hard 72ead1c4c1778c23c277c4f15bbb68f3bb205f54
.. 其中哈希是合并之前提交的哈希(来自日志)。最后,将更改强制推送回 Bitbucket,覆盖历史记录。
git push -f
当然,如果存储库是共享的,并且其其他用户已拉取您最近的提交并在其之上构建,他们将不会高兴。因此,在这种情况下,请务必通知每个人您正在做什么。
revert
,正如其他答案中提到的,是另一种选择;它保留您所做的提交,但进一步修改存储库(使用新提交),以撤消您所做的更改。是否要使用 revert
取决于您是否希望提交中的信息保留在存储库历史记录中。
有关撤消 git 中的更改的更多详细信息,请参阅 Atlassian 的优秀教程页面。
Bitbucket 于 2017 年实现了“恢复拉取请求”功能。
要恢复拉取请求:
来源:文档。
我建议改为执行
revert
,因为您要恢复公共仓库。
git revert HEAD
git push -f origin
撤消提交的更改:
git revert <commit id>
首先,在本地计算机上,在您合并到的分支上(例如
master
):
git revert -m 1 HEAD
或:
git revert -m 1 <merge commit hash>
然后推至原点。
或者,如果您无法直接推送到 master,请在恢复之前先在 master 上创建一个新分支,然后使用这个新分支针对 master 推送并创建一个新 PR,并在 bitbucket 上合并。