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

filter-branch --tree-filter之后从git repo中删除refs/original/heads/master?

在这个问答内容中,我们提到了filter-branch命令,它是一个强大的Git命令,用于对历史提交进行修改。--tree-filter选项允许你在每个提交的树中执行自定义脚本。在这个问题中,我们要求删除refs/original/heads/master引用。

refs/original/heads/master是一个引用,它指向filter-branch命令在修改历史提交之前的原始master分支。在使用filter-branch命令时,Git会自动创建这个引用,以便在需要时可以恢复到修改之前的状态。

要删除refs/original/heads/master引用,你可以使用git update-ref命令:

代码语言:txt
复制
git update-ref -d refs/original/heads/master

这个命令会删除refs/original/heads/master引用。请注意,这个操作是不可逆的,所以在执行之前确保你已经备份了所有重要的数据。

如果你想要删除所有refs/original/引用,可以使用以下命令:

代码语言:txt
复制
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

这个命令会找到所有refs/original/引用,并使用git update-ref命令删除它们。

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

相关·内容

  • Github技巧 – 删除敏感文件、批量修改提交

    这次学乖了,跑去看了眼文档,发现一个非常好用的指令git filter-branch。...比如删除passwords.txt文件,可以运行: $ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd...(21/21) Ref 'refs/heads/master' was rewritten 而且,由于指令是运行指定的shell,因此批量变更内容的复杂操作也是可以进行的。...首先单独clone下repo之后cd进来git filter-branch之后检查git log会发现hash和日期都变了,虽然hash没办法,不过日期的问题不用担心,push后是正确的。...检查没有问题后,用git push --force强制push。之后在开发环境fetch之后hard reset(git reset --hard origin/master之类)即可。

    80110

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

    假设你的仓库包含以下分支与标签: $ find .git/refs -type f .git/refs/heads/experiment .git/refs/heads/master .git/refs...refs/heads/master cac0cab538b970a37ea1e769cbbde608743bc96d refs/tags/v1.0 9585191f37f7b0fb9444f35a9bf50de191beadc2...7b30847 add git tarball 现在,你必须重写 7b30847 提交之后的所有提交来 Git 历史完全移除这个文件。...(2/2) Ref 'refs/heads/master' was rewritten --index-filter 选项类似于在 重写历史 中提到的的 --tree-filter 选项,不过这个选项并不会让命令将修改在硬盘上检出的文件...不过,你的引用日志和你在 .git/refs/original 通过filter-branch 选项添加的新引用还存有对这个文件的引用,所以你必须移除它们然后重新打包数据库。

    82220

    Git 维护及数据恢复

    假设仓库包含以下分支和标签: $ find .git/refs -type f .git/refs/heads/experiment .git/refs/heads/master .git/refs/...为了演示这点,往 test 仓库中加入一个大文件,然后在下次提交时将它删除,接着找到并将这个文件仓库永久删除。...而在这次提交之前仅用了 2K 左右 ── 显然在这次提交时删除文件并没有真正将其历史记录删除。...(2/2) Ref 'refs/heads/master' was rewritten –index-filter 选项类似于第 6 章中使用的 --tree-filter 选项,但这里不是传入一个命令去修改磁盘上签出的文件...不过 reflog 以及运行 filter-branchGit 往 .git/refs/original 添加的一些 refs 仍有对它的引用,因此需要将这些引用删除并对仓库进行 repack

    56420

    Git GC命令清理Git暂存区

    假设仓库包含以下分支和标签: $ find .git/refs -type f .git/refs/heads/experiment .git/refs/heads/master...为了演示这点,往 test 仓库中加入一个大文件,然后在下次提交时将它删除,接着找到并将这个文件仓库永久删除。...而在这次提交之前仅用了 2K 左右 ── 显然在这次提交时删除文件并没有真正将其历史记录删除。...(2/2) Ref 'refs/heads/master' was rewritten --index-filter 选项类似于第 6 章中使用的 --tree-filter 选项,但这里不是传入一个命令去修改磁盘上签出的文件...不过 reflog 以及运行 filter-branchGit 往 .git/refs/original 添加的一些 refs 仍有对它的引用,因此需要将这些引用删除并对仓库进行 repack

    6.6K20

    Git 仓库瘦身与 LFS 大文件存储

    To github.com:yeshan333/git-lfs-prune-repo.git e3baf1a..f057313 master -> master 好,接下来我们假装这个仓库有很多文件...就算知道了是哪里个文件造成的,我们直接删除那个文件是没有用的,我们还需要删除那个文件对应的 Git Object 文件。...bigfile,日志我们可以看到本地仓库已经移除大文件成功了 ➜ git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch.../heads/master' is unchanged WARNING: Ref 'refs/remotes/origin/master' is unchanged WARNING: Ref 'refs...master -> master 开启了 LFS 之后,对应大文件的内容存储在 LFS 服务器,不再是存储在 Git 仓库Git 仓库存储的是大文件的指针文件,LFS 的指针文件是一个文本文件

    66540

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

    二、具体操作 首先,git仓库删除历史大文件分为以下步骤: 查找大文件id→根据id查找大文件所在的路径→删除文件→删除文件的历史记录→提交→清除本地缓存 (我按照我的理解总结的,不知道是不是对的,如果有错误的话...清除本地缓存 $ rm -Rf .git/refs/original $ rm -Rf .git/logs/ $ git gc $ git prune 做完这一步查看仓库大小 image.png Gitee...$ git filter-branch --tree-filter 'rm -f path/to/large/files' --tag-name-filter cat -- --all $ git push...A previous backup already exists in refs/original/ Force overwriting the backup with -f 并告知所有组员,push...代码前需要 pull rebase,而不是 merge,否则会该组员的本地仓库再次引入到远程库,导致仓库在此被 Gitee 系统屏蔽。

    5.8K10

    Git内部原理介绍

    /origin/* 如果想让git每次只拉取远程master分支,而不是所有分支,可以将引用规格那一行修改为: fetch = +refs/heads/master:refs/remotes/origin...refs/heads/master 确定HEAD引用,明确检出至工作目录的内容 => GET HEAD ref: refs/heads/master 以上说明完成抓取后需要检出master分支 info...add git tarball 7b30847之后的所有提交历史完全移除该文件 $ git filter-branch —index-fileter ‘git rm —ignore-unmatch...只修改暂存区或索引的文件 --cached 需要从索引移除,使得在运行过滤器是,并不会将每个修订版本检出到磁盘 --ignore-unmatch 如果尝试删除的模式不存在时,不提示错误 filter-branch...用于指定从那个提交以来的历史 重新打包日志 执行上面操作,本地历史不在包含那个文件的引用,但是,引用日志和 .git/refs/original 通过 filterbranch选项添加的新引用还存有对这个文件的引用

    17K83

    Git Pro深入浅出(三)

    默认情况下,引用规格由 git remote add 命令自动生成, Git 获取服务器 refs/heads/ 下面的所有引用,并将它写入到本地的 refs/remotes/origin/ 。.../master 分支上 $ git push origin master:refs/heads/qa/master 如果他们希望 Git 每次运行 git push origin 时都像上面这样推送,可以在他们的配置文件添加一条.../*:refs/remotes/origin/* push = refs/heads/master:refs/heads/qa/master (3)删除引用 $ git push origin...不过,你的引用日志和你在 .git/refs/original 通过 filter-branch 选项添加的新引用还存有对这个文件的引用,所以你必须移除它们然后重新打包数据库。...在重新打包前需要移除任何包含指向那些旧提交的指针的文件: $ rm -Rf .git/refs/original $ rm -Rf .git/logs/ $ git gc 这个大文件还在你的松散对象

    86461

    Git 中文参考(六)

    当前分支值重新启动增量导入的特殊情况应写为: from refs/heads/branch⁰ ⁰后缀是必需的,因为快速导入不允许分支自身开始,并且在从输入读取from命令之前在内存创建分支。.../heads/master Inactive Branches ----------------- refs/heads/master: status : active loaded dirty...-f --force git filter-branch 拒绝以现有的临时目录开始,或者当已经使用 refs / original / 开始 refs 时,除非被强制。...例子 假设您要从所有提交删除文件(包含机密信息或侵犯版权): git filter-branch --tree-filter 'rm filename' HEAD 但是,如果某个提交的树没有该文件,.../heads/*:refs/remotes/origin/* 要更新生成的 mine.git 存储库,可以在使用增量更新替换存储在/home/me/tmp/file.bundle 的软件包之后进行提取或提取

    22210
    领券