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
我做了几次提交(假设 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