从之前的提交推送 Git

3

我在一个分支中有几个提交,但我注意到有些问题,所以我回到了之前的提交(checkout),做了一些更改,现在一切都好了。

但问题是,我无法推送,因为git要求我先拉取,但我不想拉取,因为它会合并,而我不想要这个。

我只想要我的当前本地提交成为第一个或最新的提交。

这种情况怎么办呢?


为什么你不能拉取并在合并时选择自己的更改? - Mattias
你已经提交了错误的代码吗? - NaN
是的,我已经提交了错误的代码。 - Don Juan
1
你需要使用“force”选项进行推送(但是,这样做会让其他在该项目上工作的人生气),或者在错误提交的顶部添加一个额外的“撤销”提交。检出错误提交,应用一个撤销/否定/回滚补丁(然后你就可以将其推送,不良代码将从远程仓库中消失),然后将你的更正重新基于当前头部。结果将是:删除了错误代码,应用了补丁。至于消失(~)--实际上并不会。历史记录将知道你推送了错误代码,然后又将其删除。 - quetzalcoatl
然而,如果你不知道我在说什么,请等待直到有人给你写一份更长、更详细的指南,或者至少指向一些相关文章。如果你在上述任何步骤中失败,可能会让事情变得非常糟糕。当然,几乎没有什么是不能修复的,但如果你搞砸了某些东西,就需要更多的“神秘”知识来修复,而且可能会留下非常糟糕的印象。当然,如果有这样的词的话 :) - quetzalcoatl
1个回答

1

只是为了将 @quetzalcoatl 的评论变成答案...

git push --force

...将分支在远程的HEAD移动到当前提交,即使该提交在远程HEAD指向的位置之前。

这适用于撤消最近的提交,即使已经push了它。使用reset --soft将当前HEAD后移,然后使用push --force将头更新到远程。


git 推送 -f origin - UserASR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接