Git重置 - 分支落后于主人

时间:2016-02-05 11:55:59

标签: git push reset master

我做了几次提交(让我们说ID:1,2,3,4),然后意识到我在提交3中犯了一个错误,想要回到提交2的代码版本。

我做了:

git reset --hard 2

现在git说:

On branch master. 
Your branch is behind origin/master by 11 commits and can be fast forwarded.

我想知道我怎样才能推动"我的代码,以便每个人都有这个版本。

3 个答案:

答案 0 :(得分:3)

根据您的需要:

从历史记录中删除提交3的一种方法是:

$ git rebase -i <id of commit 2>
# an editor will open a text editor, asking you to describe what you want to do
# delete the line containing <commit 3>, save and exit

git将输出一些指示其进度的消息,您应该最终得到一个新的主分支,其中包含除<commit 3>之外的所有提交。

然后,您需要添加--force-with-lease选项以推送此已编辑的master分支:

git push --force-with-lease origin master

答案 1 :(得分:2)

git push -f origin强制推送并更改回购的历史记录。 仅仅git revert保留历史的2次提交可能会更好。

答案 2 :(得分:1)

您收到的消息表明您已经推送了提交3和4,因此硬重置您想要做什么 - 该命令会更改历史记录,您永远不应该尝试更改已推送的提交历史记录。相反,做一个git pull(这样你就是最新的)。然后git revert 3撤消您在提交3中所做的更改。