【发布时间】:2018-07-04 04:42:13
【问题描述】:
我需要更改一个远程 git 分支以指向提交树中的前一个提交。
我有四个分支:master、ui、test、release。 Master 和 UI 是经常合并的并行开发分支。测试和发布分支指向 master 上的先前提交。
一位同事搞砸了(不要问)并做了:
git checkout release
git reset --hard origin/ui
git push
现在我的任务是修复它。我的 googlefu 让我失望了,虽然我可以将发布分支修复为在本地存储库中的状态,但我不知道如何将更改推送到远程服务器(源)。由于master和ui之间的所有合并,我无法还原。我试过了
branch -f release <SHA1>
如果我推动我得到
! [rejected] release -> release (non-fast-forward)
它告诉我需要快进才能推动。我也试过了
git reset --hard <SHA1>
结果相同。我在删除以前对远程存储库的提交方面找到了很多帮助,但是我找不到有关如何在提交树上向后移动指针的说明。任何帮助将不胜感激。
【问题讨论】:
-
push --force或更好push --force-with-lease -
请注意,强制推送是一种破坏性行为,您应该 110% 确定您首先做的是正确的事情。