bitbucket在先前的提交上重新绑定一个分支

时间:2017-07-08 11:15:43

标签: git bitbucket atlassian-sourcetree

我正在使用bitbucket和源代码树。我想将我的远程分支重新绑定到之前的提交。

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

我无法反向提交,因为发生了合并。我也不能强行推动因为按钮被禁用了。

1 个答案:

答案 0 :(得分:1)

首先,备份您的存储库:

将其复制并保存在某处。

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

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

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