Git 重置 - 分支在 master 后面

Git reset - branch is behind 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.

我想知道如何 "push" 我的代码让每个人都有这个版本。

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

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