首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git -如何在不影响最近提交的sha-1的情况下删除旧提交?

在Git中,要删除旧提交而不影响最近提交的SHA-1,可以使用Git的重写历史功能。以下是一种方法:

  1. 首先,使用以下命令列出所有的提交记录,包括旧提交和最近提交:git log --oneline
  2. 找到你想要删除的旧提交的SHA-1值。假设该值为<old-commit-SHA-1>
  3. 创建一个新的分支来保存当前的提交状态,以防止意外丢失数据:git branch backup
  4. 使用以下命令来重置当前分支到旧提交之前的状态,其中<old-commit-SHA-1>是你想要删除的旧提交的SHA-1值:git reset --hard <old-commit-SHA-1>
  5. 现在,你的分支已经回退到旧提交的状态。使用以下命令来强制推送更改到远程仓库:git push origin <branch-name> --force

注意:请谨慎使用--force选项,因为它会覆盖远程仓库中的历史记录。

  1. 如果你想要删除旧提交之后的提交记录,可以使用以下命令:git reflog expire --expire=now --all git gc --prune=now

这将清理Git的引用日志和垃圾对象,从而删除旧提交之后的提交记录。

请注意,重写Git历史记录可能会导致数据丢失和冲突,因此在执行此操作之前,请确保你了解其潜在风险,并在必要时备份你的数据。此外,这只是一种删除旧提交的方法,可能还有其他方法可以实现相同的目标。

关于Git的更多信息,你可以参考腾讯云的产品介绍页面:腾讯云代码托管(Git)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

git 删除某次指定提交

删除指定commit,需要执行变基操作,在多人协作项目中,不推荐对已推送到远程仓库内容进行变基操作 交互式变基简介 在 rebase 命令中加入 -i 或 --interactive 参数,在交互模式下完成...交互模式会将指定commit后所有提交列出,行格式:(action) (partial-sha) (short commit message) 你可以上下移动这些行从而对提交进行重排序。...当你退出编辑器时,git会按照你指定顺序去应用提交,并且做出相应操作(action)。...rebase -i origin/master 会将最后一次从origin仓库拉取或者向origin推送之后所有提交列出。...删除指定commit # 首先使用 git log 命令找到需要删除commit版本前一次commitcommit_id # 进入交互模式,进入后不会列出当前版本 git rebase -i

1.4K20

如何删除错误提交 git 大文件

那么如何把这个压缩包彻底从 git 删除? 如果需要删除 git 历史记录,使用方法很简单,请看 Git如何永久删除文件(包括历史记录) - shines77 - 博客园 。...当然这个方法需要很长时间,因为提交大文件时间不长,所以可以使用walterlv方法 彻底删除 Git 仓库中文件避免占用大量磁盘空间 - walterlv 于是远程仓库删好了,但是本地仓库还是有小伙伴拉下来...如果你不小心把大文件提交其它分支,记得切换就是你提交分支。 如果提交大文件只是在自己分支,并且放到了远程分支,那么合并到远程开发分支,那么只需要删除自己远程分支就好了,不需要继续往下做。...删除原来分支,这样就好 最后命令是使用 gc 清掉这个提交 这时候查看自己git 文件夹,如果文件夹还是那么大,那么说明还有一个分支是引用提交大文件,需要自己去看一下是哪个分支。...需要说明,git 如果提交一个文件,然后删除他,继续提交,那么这个文件是存在 git 中,需要使用特殊命令才可以删除

3.1K10

详解Git基本术语和命令

git hash(或称SHA-1) 上面提到唯一性“提交ID”,一般被称为“git hash”或“SHA-1”(请参见https://en.wikipedia.org/wiki/SHA-1)。...通常情况下,每一个文件系统修改(添加、删除、编辑、移动、复制、重命名、以及文件权限等)都会被视为一个文件。同时,其内容将被转换为唯一SHA-1代码。...主分支 当某个项目被创建为Git项目时,主分支就是其主要本地默认分支。 HEAD HEAD是每个分支上最新提交快照。每个分支都有提交ID,如前面所说,它是SHA-1短名称、或是指针引用。...HEAD始终指向分支最新提交(代码),并在每次提交时自动进行向前移动,以指向最新提交ID。 此外,当某个分支指向较提交、而不是最新提交时,就会出现“detached HEAD”概念。...可见,一旦拥有了最新提交ID引用“HEAD”,我们的确不必再去记忆那个最近工作过提交ID了。 checkout 该命令会切换到指定分支,并显示当前项目的状态。

52720

Git】Common Git Command Line Operation

Mark all added / modified / deleted files as to-be-committed 把所有增加/修改/删除文件标识为要提交 git add /PATH/TO/FILE...) 把修改/删除文件进行提交(如果有新增文件,需要使用 git add 添加) git commit -am "MESSAGE" Commit modified / deleted files and...assign comment (suitable for temporary or simple comment content) 把修改/删除文件进行提交并指定注释(适用于临时或简单注释内容) git...取消修改/删除或已标识为要 commit 新增文件更新 git reset SHA-1 Cancel all the commits after SHA-1, but retain updates...,但是保留提交文件更新,如果只想取消上一次提交SHA-1 可以设为 HEAD^ git reset --hard SHA-1 Cancel all the commits after SHA-1,

14010

代码管理工具扛把子-Git

但是最近小❤发现很多人(包括我自己)只熟悉日常代码拉取和提交,连 git revert/rebase 都不知道怎么用,太尴尬了 T.T 于是特意查了下资料,结合我们日常最常见使用写了这篇文章,相信开发者们看完都能有所收获...Git 是分布式版本管理,而 SVN 不是; Git 内容按元数据方式存储,而 SVN 用是文件; Git 内容存储用SHA-1 哈希算法,对内容完整性来说,Git 吊打 SVN; 市场占有率来说...一般选在 D 盘里: 然后去 Git 获取仓库地址,:直接复制 GitHub 仓库 https://github.com/yangfx15/coder HTTPS 链接: 然后在 Git 中执行...当进行撤销时,revert 会提交一个新版本,将需要 revert 版本内容反向修改。此时 HEAD 版本会递增,不影响之前提交内容。...这是由于 revert 操作新增了一次逆向 commit,相当于酸碱中和了,因此以后在与分支进行 merge 时,这部分改变不会再次出现!

26740

Git 系列教程(6)- 查看 commit 提交历史

可以获取到信息 不传入任何参数默认情况下git log 会按时间先后顺序列出所有的提交最近更新排在最上面 会列出每个提交 SHA-1 校验和、作者名字和电子邮件地址、提交时间以及提交说明...--name-status 显示新增、修改、删除文件清单。 --abbrev-commit 仅显示 SHA-1 校验和所有 40 个字符中前几个字符。...限制输出长度 -n:限制输出提交历史数量 --since、--until:按照时间限制 下面的命令会列出最近两周所有提交 git log --since=2.weeks 该命令可用格式十分丰富 可以是类似...git lot 限制输出选项 选项 说明 - 仅显示最近 n 条提交。 --since, --after 仅显示指定时间之后提交。...--grep 仅显示提交说明中包含指定字符串提交。 -S 仅显示添加或删除内容匹配指定字符串提交

1.8K30

Git 中文参考(六)

克隆存储库后, fetch 命令将能够在不影响工作树情况下更新修订版;并且 rebase 命令将能够使用最新更改更新工作树。...处理重命名 导入重命名文件或目录时,只需删除名称并在相应提交期间修改新名称。 Git 在事后执行重命名检测,而不是在提交期间显式执行。...--rewrite 如果修剪了 reflog 条目的前任,则将其“SHA-1 调整为等于其前面的条目的“新”SHA-1 字段。...原始标签不会被删除,但可以被覆盖;使用“–tag-name-filter cat”来简单地更新标签。在这种情况下,请务必小心并确保备份标签,以防转换发生冲突。 支持几乎正确标记对象重写。...笔记 git-filter-branch 允许您对 Git 历史记录进行复杂 shell 脚本重写,但如果您只是 _ 删除不需要数据 _(大文件或密码),则可能不需要这种灵活性。

20610

git常用操作都在这里了(二)

git修改密码 打开git bash 输入 cd ~/.ssh ls 确定有 id_rsa 和 id_rsa.pub文件 ssh-keygen -p -f id_rsa 第一次输入密码 新密码 确认新密码...比如压缩最后4次提交为一次提交 git rebase -i HEAD~4 该命令执行后,会弹出vim编辑窗口,4次提交信息会倒序排列, 最上面的是第四次提交,最下面的是最近一次提交。...SHA-1 校验和, 所以要确保列表中提交还没有推送到共享仓库中。...使用这个技巧时候需要小心,因为修正会改变提交 SHA-1 校验和。 它类似于一个小衍合 - 如果已经推送了最后一次提交就不要修正它。...同时丢弃 git stash pop 就相当于先执行git stash apply 再执行 git stash drop 暂存文件部分改动 一般情况下,创建一个基于特性提交是比较好做法 ,意思是每次提交都必须代表一个新特性产生或者是一个

935100

何在IntelliJ IDEA 中使用 Git ?你会没...

来源:rrd.me/frUJz # Git简介 Git是目前流行分布式版本管理系统。它拥有两套版本库,本地库和远程库,在不进行合并和删除之类操作时这两套版本库互不影响。...也因此其近乎所有的操作都是本地执行,所以在断网情况下任然可以提交代码,切换分支。Git又使用了SHA-1哈希算法确保了在文件传输时变得不完整、磁盘损坏导致数据丢失时能立即察觉到。...git clone:将远程Master分支代码克隆到本地仓库 git checkout:切出分支出来开发 git add:将文件加入库跟踪区 git commit:将库跟踪区改变代码提交到本地代码库中...点击IDE右上角向上箭头VCS, git commit, 写上日志提交到本地代码库中 ? git push VCS->Git->Push 将本地代码提交到远程仓库 ?...git pull 提交更新 git commit -am "备注" 合并分支到当前分支,首先切换到需要被合并分支 git checkout xxx, 再合并 git merge yyyy 提交 git

1.2K10

通俗易懂 Git 教程:核心概念

另外注意,Git最适合保存文本文件,事实上Git就是被设计出来就是为了保存文本文件,像各种语言源代码,因为Git可以对文本文件进行很好压缩和差异分析(大家都见识过了,Git差异分析可以精确到你添加或者删除了某个字母...所以使用Git基本工作流程就是: 在工作区域增加,删除或者修改文件。 运行git add,将文件快照保存到暂存区域。 提交更新,将文件永久版保存到版本库中。...而第三次提交时Test.txt并没有变化,所以只是保存最近版本 SHA-1 校验和而不生成全新blob对象。在项目开发过程中新增加文件在提交后都会生成一个全新blob对象来保存它。...而Git就是通过组织和管理这些对象状态以及复杂关系实现版本控制以及以及其他功能分支。 Git引用 ---- 现在再来看引用,就会很简单了。...如果我们想要看某个提交记录之前完整历史,就必须记住这个提交ID,但提交ID是一个40位 SHA-1 校验和,难记。所以引用就是SHA-1 校验和别名,存储在.git/refs文件夹中。

50500

7.13 Git 工具 - 替换

首先获取一个已经存在仓库,并将其分成两个仓库,一个是最近仓库,一个是历史版本仓库,然后我们将看到如何在不更改仓库 SHA 值情况下通过 replace 命令来合并他们。...第一个到第四个提交作为第一个历史版本。 第四、第五个提交作为最近第二个历史版本。 ? Figure 7-28....我们已经用基础提交重写了最近历史,基础提交包括如何重新组成整个历史说明。 我们可以将新历史推送到新项目中,当其他人克隆这个仓库时,他们仅能看到最近两次提交以及一个包含上述说明基础提交。...不用改变上游 SHA-1 我们就能用一个提交来替换历史中所有不同提交,并且所有的工具(bisect,blame 等)也都奏效。 ? Figure 7-32....有趣是,即使是使用了 c6e1e95 提交数据来进行替换,它 SHA-1 仍显示为 81a708d。

41820

7.6 Git 工具 - 重写历史

如果,你只是想修改最近一次提交提交信息,那么很简单: $ git commit --amend 这会把你带入文本编辑器,里面包含了你最近一条提交信息,供你修改。...例如,如果想要修改最近三次提交信息,或者那组提交任意一个提交信息,将想要修改最近一次提交提交作为参数传递给 git rebase -i命令,即 HEAD~2^ 或 HEAD~3。...你将会学习到几个常用用途,这样就得到了它适合使用地方想法。 从每一个提交移除一个文件 这经常发生。 有人粗心地通过 git add . 提交了一个巨大二进制文件,你想要从所有地方删除它。...Git 会自动移除所有不影响子目录提交。...因为提交包含了它们父提交 SHA-1 校验和,这个命令会修改你历史中每一个提交 SHA-1 校验和,而不仅仅只是那些匹配邮箱地址提交

66960

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券