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

如何在filter-branch之后删除旧的提交?

在使用git filter-branch命令重写Git历史后,旧的提交仍然存在于新的提交中。要删除这些旧提交,可以使用以下步骤:

  1. 首先,确保你已经执行了git filter-branch命令。这个命令会创建一个新的分支,其中包含重写后的提交历史。
  2. 切换到新的分支:git checkout new_branch
  3. 删除旧的分支:git branch -D old_branch
  4. 强制推送新的分支到远程仓库:git push -f origin new_branch
  5. 如果你想将新的分支设置为默认分支,可以在GitHub或其他托管平台上进行设置。
  6. 最后,通知其他团队成员更新本地仓库。他们需要执行以下操作:rm -rf old_repo_directorygit clone -b new_branch https://github.com/username/repo.git
    • 删除本地仓库:
    • 克隆新的分支:

注意:强制推送可能会导致其他团队成员丢失他们的本地更改。在执行这些操作之前,请确保与团队成员进行沟通。

推荐的腾讯云相关产品:

  • 腾讯云容器服务(TKE):一个支持Kubernetes的容器平台,可以帮助用户快速部署和管理应用程序。
  • 腾讯云Serverless架构:一种基于事件驱动的计算服务,可以帮助用户无需担心服务器,只需编写代码并运行。
  • 腾讯云对象存储(COS):一种高可靠、低成本的云存储服务,可以用于存储和管理大量数据。

产品介绍链接地址:

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

相关·内容

从仓库中移除敏感信息

如果你将敏感数据(密码或 SSH 密钥)提交到 Git 仓库,你能够将其从历史记录中删除。...要从仓库历史记录中完全删除不需要文件,你可以使用 git filter-branch命令或 BFG Repo-Cleaner。...有关删除使用最新提交添加文件信息,请参阅“从仓库历史记录中删除文件” 警告:一旦你推送了一个提交到 GitHub,你应该考虑它包含任何数据都会被泄露。如果你提交了密码,请更改密码!...为了说明 git filter-branch 如何工作,我们将向你展示如何从仓库历史记录中删除具有敏感数据文件,并将其添加到 .gitignore 中以确保它不会被意外重新提交。 1....告诉你同事 rebase 而不是 merge 它们创建任何分支,这些分支是从(受污染)存储库历史中创建。一次合并提交可能会重新引入一些或所有你刚才去除清除问题受污染历史记录。

92320

Git+Gerrit如何永久删除历史文件(大文件私密文件)

git reset 命令 我们知道git reset可以将当前内容回滚到指定某次提交,分为两个模式: #将内容回滚到commitid这次提交,并删除所有‘commitid’之后提交历史内容 git...git reset --soft命令一样是无法将提交记录从仓库中抹掉,虽然通过reset之后,大文件提交记录在git log中已经查找不到,但实际上,这个记录并不会真正从仓库中删除,只要能找到commit...git filter-branch 1)前面两种修改方式都是我们平时所熟悉,使用频率比较高删除某些文件或者提交记录方式,但这些方式实际上都是生成了新提交记录,并不会修改或者删除我们提交历史...Git这么强大,肯定是存在可以永久删除历史记录命令,找了一圈,发现确实有“后悔药”命令,那就是git filter-branch,通过以下命令,就可以永久删除你想要删除任何文件: git filter-branch...那么接下来只要把本地记录,强制更新到远程仓库就行了。 强制更新是一个非常危险动作,一定要确保你本地内容是最新,已经没有人在你之后提交了代码,否则会将其它的人提交代码也一并删除了。

2.5K20

Git 基础命令

-m [message] #提交工作区自上次 commit 之后变化,直接到仓库区 $ git commit -a #提交时显示所有 diff 信息 $ git commit -v #使用一次新 commit...之后所有变动,每个 commit 占据一行 $ git log [tag] HEAD --pretty=format:%s #显示某个 commit 之后所有变动,其“提交说明”必须符合条件 $ git...stash apply stash@{1} 核武器级选项 filter-branch # 从每一个提交移除一个文件:指 git add ....如果想要让 trunk 子目录作为每一个提交项目根目录,filter-branch 也可以帮助你那么做,再在新项目根目录是 trunk 子目录且 Git 会自动移除所有不影响子目录提交。...任何情形下,你也可以通过 filter-branch 来一次性修改多个提交邮箱地址。

45930

从9G到0.3G,腾讯会议对他们git库做了什么?

,2022.6.1之前提交记录都删除,所以截断 commit 节点按如下所述来找: 提前用 sourceTree(或者别的 Git 界面工具)找出来需要截断那个 commit,以主干 master...,并将截断节点提交信息修改 注意此步骤要谨慎处理,因为这步会真正地删除提交记录。...特殊分支处理 说明:以上历史记录裁剪并删除历史提交记录执行完后,对于基于截断提交节点前提交节点创建出来分支或者其子分支会出现文件被删除或者整个分支被删除情况。...id;然后执行 shell 脚本里面条件判断改成判断所有的父提交 id;类似这样: git filter-branch --force --parent-filter ' read parent...python 脚本里面,按照分支名字和自己分支截断日期来做比对逻辑进行删除提交记录操作。

87051

Git 修改提交历史中邮箱和用户名

内网提交需要校验企业邮箱,有时邮箱设置错误导致 commit 邮箱有问题,此时可以通过修改已提交记录中邮箱来修复,无需重新提交。...修改最近一次提交邮箱# git commit --amend --author="NewAuthor " 批量修改邮箱# 以下脚本本人已使用多次,亲测没问题...使用该脚本,替换其中 [Your Old Email] [Your New Author Name] [Your New Email] 之后在 git 目录中执行即可。 #!...,在 refs/original/ 有一个备份,这个时候只要删掉那个备份即可,删除备份命令为: $ git update-ref -d refs/original/refs/heads/master...# 或 $ git filter-branch -f --tree-filter -f 'rm -f test' -- --all 参考文献# git修改提交作者和邮箱 git 修改历史提交用户名和邮箱

34220

Github删除某个文件所有提交记录

在使用GitHub过程中,假如某次提交代码时不小心将敏感信息提交进了公共仓库。...如果发现得及时,本地提交后还没有推送到GitHub远程仓库的话,这种情况还好处理,直接修改代码后通过git commit --amend即可。...处理方式:git filter-branch 1、删除本地记录 git filter-branch --force --index-filter "git rm --cached --ignore-unmatch...你要删除文件(相对项目的路径)" --prune-empty --tag-name-filter cat -- --all 2、本地记录覆盖到Github,(所有branch以及所有tags) git...push origin --force --all git push origin --force --tags 3、确保没有什么问题之后,强制解除对本地存储库中所有对象引用和垃圾收集 git for-each-ref

9.4K41

教你如何去掉git历史中敏感信息

本文作者:0x584A(来自信安之路作者团队) 本章教大家如何使用 GIT 进行一些关于已提交历史修改、删除操作。...比如碰到下列情况时,如何使用 GIT 实现想要操作: 1、代码或日志中注释误提交了,怎么修改它? 2、我想丢弃指定提交历史可不可以? 3、在提交很久历史记录中存在敏感信息,如何修改或删除它?...先通过 $ git log 命令在历史记录中查找到想要删除某次提交 commit id,我这里是:5e63d3cfa09176422b0b52714bd77af1a0ce8e63。...当我们根据关键词 log 搜索提交历史存在敏感信息,是很久以前提交并且那次提交改动了很多文件内容,不能通过移除 commit id 方式进行删除,此时该怎么办呢?...核弹级选项: filter-branch 官方文档上实例:要从整个历史中删除一个名叫 password.txt 文件,你可以在 filter-branch 上使用 --tree-filter 选项

2.2K00

删除 GitGitHub 中敏感数据

但是在 Git 里删文件似乎不是个容易事情——由于 Git 会保留历史与版本回溯,所以需要将需要删除文件在之前版本中也一并删除掉w 据说正常来讲需要使用 git filter-branch 命令,...好在有一个叫做 BFG 工具,提供了一种更快、更简单 git filter-branch 替代方法,用于删除不需要数据。简单踩了一下坑,做了一下步骤记录。 1. 安装 BFG 2....运行 BFG 万事俱备,准备删除w 删除文件命令: java -jar bfg路径/bfg-1.13.0.jar --delete-files 需要删除文件 删除文件夹命令: java -jar...bfg路径/bfg-1.13.0.jar --delete-folders 需要删除文件夹 4. commit 并 push 到远端 这里由于删除文件更改了之前提交历史,所以必须 force push...git push --force 之后就可以去 GitHub 上检查一下文件是否删完了w 5.

1.4K10

10.7 Git 内部原理 - 维护与数据恢复

通常这是因为你强制删除了正在工作分支,但是最后却发现你还需要这个分支;亦或者硬重置了一个分支,放弃了你想要提交。 如果这些事情已经发生,该如何找回你提交呢?...下面的例子将硬重置你测试仓库中 master 分支到一个提交,以此来恢复丢失提交。...为了演示,我们将添加一个大文件到测试仓库中,并在下一次提交删除它,现在我们需要找到它,并将它从仓库中永久删除。...7b30847 add git tarball 现在,你必须重写 7b30847 提交之后所有提交来从 Git 历史中完全移除这个文件。...最后,使用 filter-branch 选项来重写自 7b30847 提交以来历史,也就是这个问题产生地方。 否则,这个命令会从最旧提交开始,这将会花费许多不必要时间。

80020

Git 仓库体积过大,缩减记录

二、具体操作 首先,git仓库中删除历史大文件分为以下步骤: 查找大文件id→根据id查找大文件所在路径→删除文件→删除文件历史记录→提交→清除本地缓存 (我按照我理解总结,不知道是不是对,如果有错误的话...删除文件历史记录 $ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch --ignore-unmatch...【your_file】' --prune-empty --tag-name-filter cat -- --all 【your_file】那里还是填第2步得到路径,类似于下面这样: $ git filter-branch...ignore-unmatch image/blog_images090816290568_01.png' --prune-empty --tag-name-filter cat -- --all 接下来就要稍等一下了,如下图,提交记录越多...提交 $ git push --force --all 【注意】这一步需要输入GitHub账号和密码 另外,如果出现提示remote: GitLab: You are not allowed to force

5.4K10

公司敏感数据被上传Github,吓得我赶紧改提交记录

git commit --amend --author="程序员小富 " --no-edit 修改完成之后,别忘了推送到远程仓库。...git push origin master 批量修改 Git官网提供了很多种修改提交记录信息方法,这里主要介绍下filter-branch,它可以通过脚本方式批量修改历史提交记录信息。...filter-branch 它能实现如下功能,正好符合我们要批量修改历史提交记录中用户、邮箱需求。...全局修改邮箱地址; 从每一个提交中移除一个文件; 使一个子目录做为新根目录 用法 历史提交记录中有很多用户名xiaofu提交记录,现在使用filter-branch批量将他们改写成程序员小富。...git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD 修改完成之后,别忘了推送到远程仓库

13710

盘点Git那些冷门玩法

git push origin develop:master -f 3 切换到分支master。 git checkout master 4 下载远程仓库最新内容,不做合并。...1 批量修改本地提交记录: git filter-branch -f --env-filter \ "GIT_AUTHOR_NAME='要改成提交人用户名'; GIT_AUTHOR_EMAIL...='要改成提交人邮箱'; \ GIT_COMMITTER_NAME='要修改提交人用户名'; GIT_COMMITTER_EMAIL='要修改提交人邮箱';" 2 push git push..."eacdy0000@126.com" 参考文档 •git 修改已提交某一次邮箱和用户信息[3]•git修改提交作者和邮箱[4] 删除tag 前几天要发布一个私人小项目,然而手误,打错标签了,想要删除...记录下: 解决方案 # 本地删除 git tag -d [tag名称] # 远程删除 git push origin :refs/tags/[tag名称] 示例: git tag -d v1.0 git

63630

7.6 Git 工具 - 重写历史

这个命令是 filter-branch,它可以改写历史中大量提交,除非你项目还没有公开并且其他人没有基于要改写工作提交工作,你不应当使用它。 然而,它可以很有用。...你将会学习到几个常用用途,这样就得到了它适合使用地方想法。 从每一个提交移除一个文件 这经常发生。 有人粗心地通过 git add . 提交了一个巨大二进制文件,你想要从所有地方删除它。...可能偶然地提交了一个包括一个密码文件,然而你想要开源项目。 filter-branch 是一个可能会用来擦洗整个提交历史工具。...如果想要让 trunk 子目录作为每一个提交项目根目录,filter-branch 也可以帮助你那么做: $ git filter-branch --subdirectory-filter trunk...任何情形下,你也可以通过 filter-branch 来一次性修改多个提交邮箱地址。

66060

Git目录为什么这么大

1、介绍 2、Git存储原理 2.1 目录结构 2.2 提交内容 2.3 如何彻底删除一个文件 3、解析Object存储方式 4、处理大文件 4.1 大文件产生 4.2 寻找大文件ID 4.3...删除文件仍然在Git仓库中保存着。直接删除文件并提交起不到给Git仓库瘦身效果 在Git仓库彻底删除一个文件只有一种办法:重写Rewrite涉及该文件所有提交。...借助 git filter-branch 便可以重写历史提交,当然这也是Git中最危险操作 2.3 如何彻底删除一个文件 以一个文件提交为例,这个文件可能会关联很多次提交,只有将每一次与该文件有关提交记录进行重写...,才能真正实现删除这个文件,具体做法如下 # git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch...命令用于显示已打包内容,我们用它来找到那些大文件 -v(verbose)参数是打印详细信息 4.3 删除大文件 # git filter-branch --force --prune-empty

1.2K10
领券