bitbucket rebase 之前提交的分支

bitbucket rebase a branch on a previous commit

我正在使用带有源代码树的 bitbucket。我想将我的远程分支重新设置为之前的提交。

我在本地所做的一些更改已与远程合并。遥控器处于非工作状态。我想做一个简单的操作回到以前的状态。如果我在远程分支上变基,我的本地版本可以运行,但远程版本仍然处于错误状态。如果我尝试推送它会拒绝,因为 Updates were rejected because the tip of your current branch is behind

我无法撤消提交,因为发生了合并。我也不能强制按下,因为按钮被禁用了。

首先,备份您的存储库:

复制并保存在某处。

第二次检查您的远程分支:

git checkout -b mybranch origin/mybranch -u

如果您想恢复到以前的状态,您有以下三种选择:

 1. Revert - git revert <previous_commit>
 2. Rebase - git rebase -i <previous_commit>
 3. Reset - git reset <previous_commit>

选项 1 是最安全的,因为它会创建一个新的提交来还原当前的提交。

选项 2 通过从上一次提交开始以交互方式变基提交来重写历史记录。您可以有选择地选择哪些提交是其中的一部分 新的历史。

选项 3 还通过强制分支 HEAD 指向先前的提交来重写历史记录(就好像未来的提交没有发生一样)。如果您已签出文件,您可能需要 运行 使用 --hard 选项进行此操作(注意不要丢失您的工作!)

由于选项 2 和选项 3 重写了历史记录,因此您应该注意将更改通知您的团队。他们将需要强制获取最新的分支(或者只是从源代码重新克隆存储库)。完成更改并感到满意后,将更改推送到远程分支:

git push origin mybranch --force

或者干脆

git push --force

因为已经设置了一个上游分支。