完全撤消提交并推送到远程[重复]
Posted
技术标签:
【中文标题】完全撤消提交并推送到远程[重复]【英文标题】:Completely undo commit and push to remote [duplicate] 【发布时间】:2020-01-18 13:31:39 【问题描述】:[编辑:这个问题的答案抛弃了历史,如果这不是你想要的,那么忽略这个问题]。
[编辑:CodeWizard 指出重复的答案不是重复的,因为这个问题清楚地表明我想丢弃历史。此外,该问题中没有一个答案几乎与该问题收到的答案一样好]
我刚刚提交并推送了一些完全错误的代码。
我想完全退出该提交并推送,因为它从未发生过。
我不希望代码留在提交历史记录中。
没有人做过任何其他的提交和推送。
这个问题是不同的,因为我要求人们不要发布替代方案,除非他们实现完全相同的目标(丢弃所有历史记录)。原因是:我试图用谷歌搜索这个问题,但我得到的问题与提供替代方案的答案杂乱无章,但不清楚这些替代方案是丢弃代码还是将代码保留在 git 提交历史记录中。
这个问题仅限于: 1) 仅丢弃最后一次提交/推送。 2)所有历史都是关于提交/推送从回购中消失的。
我将这些限制放在上面,以便我们得到最简单的答案。
我正在使用 git 命令行和乌龟 git 对抗 gitlab。
【问题讨论】:
【参考方案1】:您承认改写历史的危险。 Soo... 这会将 master 移回一次提交。
git push -f origin master~:master
其他方法是重置 HEAD
git checkout master
git reset --hard HEAD~
git push origin -f master
【讨论】:
分解命令会很有用,以便 OP 或其他人可以根据需要对其进行调整。-f
使其成为强制推送,告诉远程仓库(在这种情况下为origin
)无论如何都要接受你给它的东西。 origin
当然是您要推送到的遥控器的本地名称。还要解释一下master~:master
——如果你从/向不同的分支推送,显然你会在那里放一些别的东西。以上是关于完全撤消提交并推送到远程[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Git 创建远程仓库并克隆到本地,创建本地仓库并推送到远程仓库