首页
学习
活动
专区
工具
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 它们创建的任何分支,这些分支是从旧的(受污染的)存储库历史中创建的。一次合并提交可能会重新引入一些或所有你刚才去除清除问题的受污染历史记录。

96620

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.6K20
  • 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 来一次性修改多个提交中的邮箱地址。

    47730

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

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

    98951

    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 修改历史提交的用户名和邮箱

    47420

    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.8K41

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

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

    2.3K00

    删除 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 提交以来的历史,也就是这个问题产生的地方。 否则,这个命令会从最旧的提交开始,这将会花费许多不必要的时间。

    83920

    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

    6.3K10

    盘点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

    64930

    7.6 Git 工具 - 重写历史

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

    69460

    公司敏感数据被上传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 修改完成之后,别忘了推送到远程仓库

    14910

    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.3K10
    领券