Git 如何撤回已 Push 的代码

这篇具有很好参考价值的文章主要介绍了Git 如何撤回已 Push 的代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在日常的开发中,我们经常使用Git来进行版本控制。有时候,我们可能会不小心将错误的代码 Push 到远程仓库,或者想要在本地回退到之前的某个版本重新开发。

或者像我一样,写了一些感觉以后很有用的优化方案push到线上,又接到了一个新的需求。但是呢,项目比较重要,没有经过测试的方案不能轻易上线,为了承接需求只能先把push上去的优化方案先下掉。

现在我的分支是这样的,我想要在本地和远程仓库中都恢复到help文档提交的部分。

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

注意

  • 在执行这些操作之前,请确保完全理解它们的影响,特别是在多人协作的项目中。
  • 对于受保护的分支(如主分支或发布分支),可能无法执行强制推送。需要根据你的项目设置或团队规范来处理这种情况。
  • 使用强制推送会改变远程仓库的历史,可能会给团队成员带来困扰。在这样做之前,最好与团队成员沟通。

最简单粗暴的方法

IntelliJ IDEA方法

如果你的错误代码不是很多,那么你其实可以通过与你想要恢复到的commit进行对比,然后手动删除错误代码,然后删除不同的代码。

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

按住 ctrl 选择想要对比的两个commit,然后选择 Compare Versions 就能通过对比删除掉你想要删除的代码。

这个方案在代码很简单时时非常有效的,甚至还能通过删除后最新commit和想要退回的commit在Compare一下保障代码一致。

但是这个方法对于代码比较复杂的情况来说就不太好处理了,如果涉及到繁杂的配置文件,那更是让人头疼。

而且,这样还会保留错误提交的记录,对于有强迫症的我来说,有点接受不能。对此,git也有一套较为优雅的操作流程,同样能解决这个问题。

Git命令方法

在Git中,要比较两个commit之间的代码变动,可以使用 git diff 命令。这个命令允许你查看两个不同commit之间的差异。以下是一些常用的方法:

  1. 基本用法:

    git diff <commit1> <commit2>
    

    这里 <commit1><commit2> 分别代表你想要比较的两个commit的哈希值。

    这里注意一下,在使用 git diff 命令比较两个commit时,commit1和commit2的顺序会影响显示的差异内容。命令 git diff <commit1> <commit2> 的作用是显示从 commit1 变化到 commit2 时代码发生的变动。

  • 如果你先指定较早的commit(commit1),然后指定较晚的commit(commit2),你会看到在这两个commit之间所做的更改。
  • 相反,如果你先指定较晚的commit作为 commit1,然后指定较早的commit作为 commit2,你将看到要从较晚的commit回退到较早commit所需撤销的更改。

所以个人一般用法的话都是将较早的commit作为 commit1,较晚的commit作为 commit2,通常更符合查看代码变化的直观逻辑

  1. 比较指定文件的变化:
    git diff <commit1> <commit2> -- <file_path>
    
    这条命令将只显示指定文件在两个commit之间的差异。

IDEA 中 Git 较为优雅的方法

Reset Current Branch 到你想要恢复的commit记录

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

这个时候会跳出四个选项供你选择,我这里是选择hard

其他选项的含义仅供参考,因为我也没有一一尝试过。

  1. Soft:你之前写的不会改变,你之前暂存过的文件还在暂存。

  2. Mixed:你之前写的不会改变,你之前暂存过的文件不会暂存。

  3. Hard:文件恢复到所选提交状态,任何更改都会丢失。你已经提交了,然后你又在本地更改了,如果你选hard,那么提交的内容和你提交后又本地修改未提交的内容都会丢失。

  4. keep:任何本地更改都将丢失,文件将恢复到所选提交的状态,但本地更改将保持不变。你已经提交了,然后你又在本地更改了,如果你选keep,那么提交的内容会丢失,你提交后又本地修改未提交的内容不会丢失。

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

然后,之前错误提交的commit就在本地给干掉了。但是远程仓库中的提交还是原来的样子,你要把目前状态同步到远程仓库。也就是需要把那几个commit删除的操作push过去。

打开push界面,虽然没有commit需要提交,需要点击Force Push,强推过去。

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

需要注意的是对于一些被保护的分支,这个操作是不能进行的。需要自行查看配置,我这里因为不是master分支,所以没有保护。

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

可以看到,远程仓库中最新的commit只有我们的help文档。在其上的三个提交都没了。

Git 如何撤回已 Push 的代码,GIT,git,intellij-idea

我还是想用Git命令来完成恢复

1. 重置当前分支到特定commit

首先,找到你想要恢复到的commit的哈希值。可以通过 git log 查看提交历史来找到这个哈希值。

然后,使用 git reset 命令来重置当前分支。这里有四种不同的模式可选:

  • Softgit reset --soft <commit-hash>

  • Mixedgit reset --mixed <commit-hash>(这是默认选项)

  • Hardgit reset --hard <commit-hash>

  • Keepgit reset --keep <commit-hash>

2. 将更改推送到远程仓库

在重置后,本地分支的状态可能与远程仓库不同步。为了同步这些更改,需要使用强制推送。但请注意,这个操作对于团队协作和共享仓库来说可能是危险的,因为它会覆盖远程仓库的历史。

使用以下命令进行强制推送:

git push origin <branch-name> --force

或者,如果你使用的是Git版本2.5及以上,可以使用更安全的方式:

git push origin <branch-name> --force-with-lease

这个命令在强制推送之前会检查远程分支的状态,确保没有被其他人更新过。

*注意: 以上使用的是2023版IDEA,如果有出入的话可以考虑搜索使用git命令代替,毕竟通用性会更好一点,可能就是有点不直观。文章来源地址https://www.toymoban.com/news/detail-760257.html

到了这里,关于Git 如何撤回已 Push 的代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git撤回上一次push

    我们有时候误提交代码需要回滚到上一个版本,需要通过git命令重新提交处理 git reset 命令用于回退版本,可以指定退回某一次提交的版本。 git push 命令用于从将本地的分支版本上传到远程并合并。 将当前版本强制提交 git status 、 git log 我写东西本来字数就少,真叻色 文章

    2024年02月16日
    浏览(51)
  • git撤回最近一次push操作

    将指定远程分支强制覆盖到当前本地分支(相当于放弃当前本地分支的所有更新): git reset --hard origin/远程分支名 。其中origin就是远程名,代表使用origin的远程指定分支,覆盖本地当前分支。 其中,branch_name 是你想要撤回 push 操作的分支的名称。 这个命令将会强制推送到远

    2024年02月14日
    浏览(37)
  • IDEA中使用git如何撤回commit的代码

    在开发过程中,有时候提交代码会发现提交的代码中有不应该提交的部分,比如说有时候不需要我们提交本地的配置文件,这个时候就需要我们撤销已提交的内容重新提交 这个命令会创建一个新的 commit,将指定的 commit 撤销掉。新的 commit 会保留先前提交的历史记录,并且会根据

    2024年02月11日
    浏览(44)
  • git commit之前,没有pull最新代码,导致无法push代码如何解决?——git三板斧

    如果在 git commit 之前没有 pull 最新代码,再进行 push 操作可能会出现冲突,导致无法 push 代码。此时, git 会提示类似以下的错误信息: 这个错误提示说明了更新被拒绝,因为远程仓库包含了本地仓库没有的工作。这通常是由于其他人已经推送了代码,或者你在另一个地方进

    2024年02月13日
    浏览(101)
  • 如何撤回git commit

    要撤回 Git 提交,可以使用以下几种方法之一: 使用 git reset 命令 使用 git reset 命令可以撤回最近一次的 commit,并将相应的修改撤回到工作区中。例如,如果要撤回最近一次的 commit,可以使用以下命令:

    2024年02月12日
    浏览(41)
  • IDEA git 代码已经commit,但未 push推送,如何撤销提交缓存区代码

    记录自己提交代码时,手滑错误commit了多余的文件,但未push到云端,想要撤回整个commit的操作: idea菜单栏上的 VCS–Git–Reset HEAD…     此时按照图中选择回退的方式,以及回退到哪个版本,点击“Reset”即可,在\\\"Version Control\\\" 中 “log” 里,最新一次提交的记录消失即回退

    2024年02月10日
    浏览(68)
  • 执行 git add 后如何撤回

    很多刚开始使用 git 的程序员都不知道执行完 git add -A 后,该怎么撤回,那说明对 git reset 命令还没不够了解。该命令的格式有两种, 第一种的格式如下: 此表单将所有路径与 pathspec 匹配的 index 项重置为 tree-ish 的状态。(它不会影响工作树或当前分支。) 这意味着 git res

    2024年02月08日
    浏览(30)
  • git 如何创建新的远程分支,并将本地代码 push 到新的分支

    1、可以通过git branch -r 命令查看远端库的分支情况 2、从已有的分支创建新的分支(如从master分支),创建一个 duanjiwang 分支 但此时并没有在远程仓库上创建分支 如图所示 还是只有一个 master 分支 3、建立本地到远端仓库的链接 --这样代码才能提交上去 使用命令行 4、git 强制提交

    2024年02月12日
    浏览(60)
  • git上传代码之还没push如何回滚上一次commit的操作

     使用的场景: 1.发现传错分支啦或者是还有东西未修改完成,想要撤回commit操作 必须是只是进行了git add . git commit -m \\\"save\\\" 还没有push  具体操作: 1. 切换到目标分支(在你执行commit操作的分支) 2.撤销commit,用如下指令 我的实际操作:  最终得到: 最后的最后: 本地的代

    2024年02月16日
    浏览(42)
  • 【IntelliJ IDEA】怎么调整工具栏的工具图标,比如在工具栏显示git push按钮

    演示版本为2019.1.1 想调整一下IDEA的工具栏图标,但是搜了一下,都感觉说的不是很完整,或者跟着步骤却没有任何效果,以下是个人使用的一些经验,希望可以帮到你 如果你是想在View - ToolBar中的工具栏添加按钮,也就是这一栏 比如我的git 原本是没有push按钮的,该怎么添加

    2024年02月11日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包