【经验】Git|如何删除错误的commit?(存在大文件无法push的commit、不需要的commit等情况、清除所有commit的情况)

这篇具有很好参考价值的文章主要介绍了【经验】Git|如何删除错误的commit?(存在大文件无法push的commit、不需要的commit等情况、清除所有commit的情况)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

情况一:尚未推送或无法推送

如果你在本地多次提交了commit,但是其中有一个commit交错了、或者无法推送,
就像下面这张图这样:

【经验】Git|如何删除错误的commit?(存在大文件无法push的commit、不需要的commit等情况、清除所有commit的情况)

你可以安装以下步骤操作。

  1. 通过git log想清楚自己需要切换到哪一个commit状态,查看commit id:

    # 查看git记录(能看到每次操作的id):
    git log
    
  2. 将仓库的状态恢复到能够正常提交的状态/需要删除的状态的上一个commit状态--soft参数会保证恢复后你的文件夹内容保持不变):

    git reset --soft <无法上传的那次的上一个的id>
    

    注:id输入6位以上就差不多可以了,多输入几位也行,不用全选
    注:git reset 有三种模式:–soft、–hard和不加参数。

    1. –soft是保留工作区的内容和add提交,只是切换指针
    2. –hard是什么都不保留
    3. 不加参数是保留工作区的内容但是不保留add提交

    在其他情况下,你也可以选择使用其他的参数。

  3. 检查当前Git的状态,尝试push:

    # 可以看到完整的修改记录:
    git status
    # 重新提交commit
    git commit -m "xxxxxx"
    # 尝试push
    git push
    

如果你无法理解以上文字描述以及命令行操作的话,也可以看视频描述,更具体一些,当我还是小白的时候这个视频帮助我圆满解决了这个问题:《从零开始的 Git 生活》Lesson 8 Git 中的后悔药.bilibili.全栈港。

情况二:已经推送

注:最好别用git revert撤销提交,有点难用。

如果你不小心已经把错误的 commit 推上去了,也不要紧。

与第一种情况一致,首先,本地执行情况一中提到的三个步骤,回到需要的commit状态。

最后推送时使用强制推送:

git push -f

情况三:想要清除所有的commit记录,只保留一个

情况描述:删库跑路 or 抹杀开发过程 or 保护隐私必备。

首先在 github 网页上或者使用 git log 查看第一个 commit 的 id,然后运行:

git reset --soft <第一个 commit 的 id>
git commit --amend

这两行指令的含义是:

  1. 将当前分支的状态切换到第一个提交中,并保留本地的修改以及暂存区的设置;
  2. 将现在的暂存区的内容直接 amend 到前一个提交(在这里指的就是第一个 commit)。

运行这两行指令之后,将会弹出一个新的编辑框,要求填写 commit message。默认的 commit message 就是你的第一个提交的 commit 信息,如果你需要修改,就修改一下。

【经验】Git|如何删除错误的commit?(存在大文件无法push的commit、不需要的commit等情况、清除所有commit的情况)

这一部分的操作很简单也很直观,不过会有人使用 rebase 做这个操作,为了描述为什么不使用 rebase,我添加了一些详细分析。为控制篇幅,我将详细的所有三种方案以及不使用 rebase 的原因写在了另一篇博文里,欢迎阅读:【经验】Git|如何将仓库中所有的 commit 合成一个?又名,如何清除所有 git 提交记录?

本账号所有文章均为原创,欢迎转载,请注明文章出处:
https://blog.csdn.net/qq_46106285/article/details/124744328。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。文章来源地址https://www.toymoban.com/news/detail-437224.html

到了这里,关于【经验】Git|如何删除错误的commit?(存在大文件无法push的commit、不需要的commit等情况、清除所有commit的情况)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 空文件夹删不掉打不开,“该项目不存在请确认该项目位置“,“项目正在打开中无法删除“,“文件已损坏或者已经被移动删除“(多种方法图文详解,细节需要注意,以及可能遇到的问题)

    这个删不掉的文件或文件夹其实是Windows系统的祖传bug到目前为止依然没有修复,所以说我们需要通过特别的手段来处理它,听我慢慢讲他的缘由可能会对解决这个问题的帮助更多,会有几种方法,我都试过了的,我把最后一种成功的放在第一个讲,没有成功的可以参考。 事情缘由因

    2024年02月06日
    浏览(54)
  • Device or resource busy错误,原因是文件或资源正在被占用,无法删除

    根据错误日志,出现了java.nio.file.FileSystemException: Device or resource busy错误,原因是文件或资源正在被占用,无法删除。 解决这个问题的方法有几种: 等待资源释放:如果该文件或资源正在被其他进程或线程使用,您可以等待一段时间,让资源释放后再尝试删除。您可以在代码

    2024年02月12日
    浏览(30)
  • 不小心删除服务[null]后,git bash出现错误,如何解决?

    1.使用搜索引擎搜索「bash: /dev/null: No such device or address」,一般答案是[null]服务出现问题,可能是缺少对应的文件「C:WindowsSystem32driversnull.sys」,要从网上或者安装镜像里找到「null.sys」复制到这个位置,再启动「null」服务。 2.到「C:WindowsSystem32drivers」查看发现「null.s

    2024年02月13日
    浏览(29)
  • 【经验分享】uniapp项目GIT如何忽略unpackage文件

    最近的uniapp项目踩了个坑,就是建完项目,提交代码后,运行发布微信小程序,生成了unpackage里的build文件,这个时候提交总是提交一堆编译后的文件,甚至造成冲突。即使在.gitignore文件中写入忽略unpackage目录也不管用。 目录 Git 忽略规则优先级 Git 忽略规则匹配语法 原因:

    2024年02月07日
    浏览(37)
  • git删除指定commit

    git log  二、找到被删除的commit的下一个commit,执行 git rebase -i commitId 例: 删除 a0db3, 则执行 git rebase -i 89d65,回车 三、保存修改 按 Esc 退出编辑模式,按 Shift + ‘;’ ,输入 !wq( 保存文件并退出) 四、验证 git log 查看 commitID a0db3 是否删除

    2024年02月15日
    浏览(31)
  • 删除误提交的 git commit

    某次的意外 commit 中误将密码写到代码中并且 push 到了 remote repo 里面, 本文将围绕这个场景讨论如何弥补. 在 Gitee 创建一个新的 Repo, clone 到本地 创建两个文件, commit 后 push 到 remote 作为初始提交 在 Gitee 检查提交成功: 分别修改两个文件, 模拟 A.txt 中误写入了敏感信息, B.txt 属

    2024年02月04日
    浏览(33)
  • Git修改与删除commit记录

    1、修改最近一次commit的信息 直接修改即可。 2、修改之前的commit的信息 其中 2 代表两条,进入VIM后按 i 或 o 之后将 pick 改为 edit ,在 ESC 后按 :wq 保存即可。 1、删除push到远程服务器的最近commit 2、git rebase删除push到远程服务器的某些commit 该命令执行时极有可能出现 reabase 冲

    2024年02月04日
    浏览(22)
  • git删除已push的commit记录

    问题: 1, commit注释写错 2, 发版时,只允许有一条commit记录,但代码还push到远程了 3, 没拉最新代码,提交后合并代码时有冲突 操作步骤: 提交历史如图: 代码变更记录如图: git log 查出历史提交记录,找到需要删除的那条记录的上一个的commit-ID: 比如我要删除第二次和第三次

    2024年02月08日
    浏览(70)
  • git 删除某一次的提交(commit)

    突然有同学问怎么删除指定的提交,其他的保持不变。 大致的意思就是我先提交的是a,又提交了b,c是我最近的一次提交。然后项目变动,b的这次改动不需要提交了,怎么把b的这次commit去掉,还不影响c。百度即可得到想要的答案。 下面我总结起来,以备不时之需。 最主要

    2024年02月03日
    浏览(38)
  • idea 修改git 用户名,邮箱,删除commit

    第一步,在idea中右键项目 第二步,使用命令 参考:https://blog.csdn.net/qq_41458961/article/details/121785558 https://blog.csdn.net/zmm0413/article/details/108078400?spm=1001.2101.3001.6661.1utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-108078400-blog-127976786.pc_relevant_defaultdepth_1-utm_source=dist

    2024年02月11日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包