Answers:
git reset --hard HEAD~1
git push -f <remote> <branch>
(实施例推: git push -f origin bugfix/bug123
)
这将撤消上一次提交,并将更新的历史记录推送到远程。您需要传递,-f
因为您要替换远程服务器中的上游历史记录。
git log --decorate --oneline
找出你的头点。
git reset HEAD~1
如果您不希望更改消失(未暂存的更改)。更改,提交并再次推送git push -f [origin] [branch]
通常,使用以下命令进行“反向”提交:
git revert 364705c
然后照常将其发送到遥控器:
git push
这不会删除提交:它将进行一次附加提交,以撤消第一个提交所做的任何操作。还有其他不是很安全的事情,尤其是当更改已经传播时。
git reset
仅在您尚未将更改推送到服务器时接受。
首先,放松一下。
“没有任何东西在我们的控制之下。我们的控制只是幻想。”,“犯错是人类的”
我知道您无意中将代码推送到remote-master
。这将很好。
1.首先,获取SHA-1
要尝试返回的提交的值,例如,提交到master分支。运行这个:
git log
您会看到像字符串一样的字符串'f650a9e398ad9ca606b25513bd4af9fe ...',以及每个提交。从您要返回的提交中复制该编号。
2.现在,输入以下命令:
git reset --hard your_that_copied_string_but_without_quote_mark
您应该会看到类似“ HEAD现在在”的消息。你很清楚。它所做的只是在本地反映这种变化。
3.现在,输入以下命令:
git push -f
你应该看到像
“警告:push.default未设置;其隐式值已更改……..……总计0(增量0),已重用0(增量0)…………您的分支名称->主用户(强制更新) ”。
现在,您很清楚。再次使用“ git log”检查主服务器,您的fixed_destination_commit应该位于列表的顶部。
欢迎您(提前;))
更新:
现在,您在所有这些操作开始之前所做的更改现在就消失了。 如果您想将这些艰辛的工作重新带回来,则有可能。感谢git reflog和git cherry-pick命令。
您可以进行交互式变基:
git rebase -i <commit>
这将显示您的默认编辑器。只需删除包含要删除的提交的行即可删除该提交。
当然,您将需要访问远程存储库才能在此应用此更改。
看到这个问题:Git:从存储库中删除选定的提交
尝试使用
git reset --hard <commit id>
请注意:此处的提交ID将是您要转到的提交的ID,但不是您要重置的ID。这是我唯一也遇到困难的地方。
然后推
git push -f <remote> <branch>
git reset --hard <the-sha-you-want-to-return-to>
。