我正在使用bitbucket和源代码树。我想将我的远程分支重新绑定到之前的提交。
我在本地进行了一些与远程合并的更改。遥控器处于非工作状态。我想做一个简单的操作,回到以前的状态。如果我在远程分支上重新绑定,我的本地版本将变为可操作但远程版本仍处于错误状态。如果我尝试推送它会拒绝,因为Updates were rejected because the tip of your current branch is behind
我无法反向提交,因为发生了合并。我也不能强行推动因为按钮被禁用了。
答案 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
因为已经设置了上游分支。