如何撤消 Bitbucket 上的合并?
How to undo a merge on Bitbucket?
我创建了一个合并(合并到 'master' 分支),现在位于 Bitbucket 存储库中。长话短说:我需要撤消合并。
我知道您可以在 Github 网站上执行此操作,但 Bitbucket 没有该功能。我不清楚如何使用 Git 执行此操作而不造成混乱。
您需要先在本地系统上克隆存储库(您可以从 Bitbucket 存储库的 "Overview" 页面以 SSH 或 HTTPS 格式获取存储库 URL):
git clone git@bitbucket.org:my/repo.git
-or-
git clone https://my@bitbucket.org/my/repo.git
git checkout master
.. 然后还原最近的提交。首先列出可用的提交:
git log
.. 然后 select 合并前的提交:
git reset --hard 72ead1c4c1778c23c277c4f15bbb68f3bb205f54
.. 其中散列是合并前提交的散列(来自日志)。最后,强制将更改推送回 Bitbucket,覆盖历史记录。
git push -f
当然,如果存储库是共享的,并且它的其他用户拉取了您最近的提交并在其上构建,他们将不会高兴。所以在那种情况下,一定要通知每个人你在做什么。
revert
,如其他答案中所述,是另一种选择;它会保留您所做的提交,但会进一步修改存储库(使用新提交),从而撤消您所做的更改。是否要使用 revert
取决于您是否希望提交中的信息保留在回购历史记录中。
有关撤消 git 中更改的更多详细信息,请参阅 good tutorial page by Atlassian。
撤消提交的更改:
git revert <commit id>
我建议改为执行 revert
,因为您要还原 public 存储库。
git revert HEAD
git push -f origin
2017 年在 Bitbucket 中实现了一个 "Revert pull request" 功能。
要还原拉取请求:
- 在拉取请求中,单击右上角的还原按钮。
(可选)在 Revert pull request 对话框中,更改您要创建的新分支的分支名称。
- 单击还原按钮。
单击 Revert 后,Bitbucket 会创建新分支。即使您取消拉取请求,还原分支仍保留在存储库中。
- “创建拉取请求”页面将以还原分支作为源打开。添加审阅者并进行其他更改后,单击创建。
来源:the docs.
首先,在您的本地计算机上,在您合并到的分支上(例如 master
):
git revert -m 1 HEAD
或:
git revert -m 1 <merge commit hash>
然后推送到原点。
或者,如果您不能直接推送到 master,请在还原之前先从 master 创建一个新分支,然后将这个新分支推送到 master 并创建一个新的 PR,并在 bitbucket 上合并。
我创建了一个合并(合并到 'master' 分支),现在位于 Bitbucket 存储库中。长话短说:我需要撤消合并。
我知道您可以在 Github 网站上执行此操作,但 Bitbucket 没有该功能。我不清楚如何使用 Git 执行此操作而不造成混乱。
您需要先在本地系统上克隆存储库(您可以从 Bitbucket 存储库的 "Overview" 页面以 SSH 或 HTTPS 格式获取存储库 URL):
git clone git@bitbucket.org:my/repo.git
-or-
git clone https://my@bitbucket.org/my/repo.git
git checkout master
.. 然后还原最近的提交。首先列出可用的提交:
git log
.. 然后 select 合并前的提交:
git reset --hard 72ead1c4c1778c23c277c4f15bbb68f3bb205f54
.. 其中散列是合并前提交的散列(来自日志)。最后,强制将更改推送回 Bitbucket,覆盖历史记录。
git push -f
当然,如果存储库是共享的,并且它的其他用户拉取了您最近的提交并在其上构建,他们将不会高兴。所以在那种情况下,一定要通知每个人你在做什么。
revert
,如其他答案中所述,是另一种选择;它会保留您所做的提交,但会进一步修改存储库(使用新提交),从而撤消您所做的更改。是否要使用 revert
取决于您是否希望提交中的信息保留在回购历史记录中。
有关撤消 git 中更改的更多详细信息,请参阅 good tutorial page by Atlassian。
撤消提交的更改:
git revert <commit id>
我建议改为执行 revert
,因为您要还原 public 存储库。
git revert HEAD
git push -f origin
2017 年在 Bitbucket 中实现了一个 "Revert pull request" 功能。
要还原拉取请求:
- 在拉取请求中,单击右上角的还原按钮。 (可选)在 Revert pull request 对话框中,更改您要创建的新分支的分支名称。
- 单击还原按钮。 单击 Revert 后,Bitbucket 会创建新分支。即使您取消拉取请求,还原分支仍保留在存储库中。
- “创建拉取请求”页面将以还原分支作为源打开。添加审阅者并进行其他更改后,单击创建。
来源:the docs.
首先,在您的本地计算机上,在您合并到的分支上(例如 master
):
git revert -m 1 HEAD
或:
git revert -m 1 <merge commit hash>
然后推送到原点。
或者,如果您不能直接推送到 master,请在还原之前先从 master 创建一个新分支,然后将这个新分支推送到 master 并创建一个新的 PR,并在 bitbucket 上合并。