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

使用git- filter -repo过滤出提交中的文件列表,这些文件不是给定提交的后代

git-filter-repo是一个用于过滤和重写Git仓库历史的工具。它可以根据指定的条件过滤出提交中的文件列表,这些文件不是给定提交的后代。

具体来说,git-filter-repo可以通过使用--path参数来指定要过滤的文件或目录路径。它会遍历整个Git仓库历史,并将不符合条件的文件或目录从每个提交中移除。

使用git-filter-repo的优势包括:

  1. 灵活性:可以根据需要自定义过滤条件,只保留符合要求的文件或目录。
  2. 效率:git-filter-repo经过优化,处理大型仓库的速度更快。
  3. 安全性:过滤后的仓库历史不会包含不需要的文件,可以减少存储空间和传输带宽的使用。

应用场景包括:

  1. 敏感信息过滤:如果仓库中包含敏感信息(如密码、密钥等),可以使用git-filter-repo过滤掉这些文件,以确保安全性。
  2. 项目精简:当需要将一个大型仓库拆分成多个小型仓库时,可以使用git-filter-repo只保留与目标项目相关的文件。

腾讯云并没有提供类似的产品或服务来替代git-filter-repo,因此无法提供相关产品和链接地址。

总结:git-filter-repo是一个用于过滤和重写Git仓库历史的工具,可以根据指定的条件过滤出提交中的文件列表,这些文件不是给定提交的后代。它具有灵活性、效率和安全性等优势,适用于敏感信息过滤和项目精简等场景。

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

相关·内容

被吐槽 GitHub仓 库太大,直接 600M 瘦身到 6M,这下舒服了

大家好,我是小富~前言忙里偷闲学习了点技术写了点demo代码,打算提交到我那 2000Star Github仓库上,居然发现有5个Issues,最近一条日期已经是2022/8/1了,以前我还真没留意这些...翻了翻各个项目发现里边的确有许多应该忽略文件.idea、.mvn、target都被我提交了,直接删除文件,但并没有什么卵用,项目整体size变化不大,应该不是这些文件原因。...Trees: 目录也被视为一个对象(Tree 对象),它保存了目录包含所有文件和子目录列表,每个列表项包括了文件或目录名称、类型、权限等信息,以及对应文件或目录 Blob 或 Tree 对象...上边三种类型对象组成了Git基本数据单元,通过这些对象组合和链接,才构建出完整提交历史,并跟踪代码库每个文件变化历史。...图片每次提交都会生成一次快照,这些快照可能包含大量文件和代码,频繁提交会导致版本库快照数量增加。Git使用是一种增量存储方式,每次提交只存储发生了变化文件和代码。

89830

查找git ignore追踪

遇到问题 在windows下,往repo里添加了一个xxx.exe文件,然后检查sourceTree却并没找到暂存更改。...或者,并没有推送过去,但当我clone下来,然后本地修改提交后发现很多不需要文件被追踪。后来发现,原来大家习惯了source tree,然后都是提交时候选择想要文件,然后推送。...这真是个令人不开心发现。个人认为,这种做法对开发是很不友好,虽然source tree图形化界面简化了git使用。但如果忘了提交某个文件怎么办?如果不小心多添加了文件怎么办?...如果一次添加了大量文件如何排查?所以,除了要添加.gitignore之外,系统学习下git使用也是很有必要。...比如,曾经遇到过这样问题,由于repo最初没有gitignore,我后面加上ignore之后,发现被ignore文件依旧会被追踪。那么,如何彻底清除和ignore这些文件呢?

1K60

Git 中文参考(三)

即只显示“to”提交祖先和“from”提交后代提交。...此外,这些大写字母可以降级为排除。例如。 --diff-filter=ad排除添加和删除路径。 请注意,并非所有差异都可以包含所有类型。...然后,索引条目和工作树文件也仅针对这些文件回滚到 HEAD 状态,从而保留与 pathspec 不匹配文件。 如果使用--keep-index选项,则已添加到索引所有更改都将保持不变。...store 存储通过 _git stash 创建给定存储创建 _(这是一个悬空合并提交)在存储引用,更新存储 reflog。这对脚本非常有用。它可能不是你想要使用命令;看到上面的“推”。...因此,这些提交将通过源存储库上git gc命令删除。 安全 提取和推送协议目的不是为了防止一方窃取不打算共享其他存储库数据。

16810

Git详解之必知点

1.Git介绍 1.1版本控制 无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改情况 1.2开发存在问题 程序员小明负责模块就要完成了,就在即将提交发布之前一瞬间,电脑突然蓝屏...小明和老王先后从文件服务器上下载了同一个文件 因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写 开发要解决问题 代码备份 版本控制 协同工作...(暂不执行添加操作) 使用 status 命令,查看状态 使用 add 命令添加,并查看状态 使用 commit 命令,提交到本地历史仓库 使用 log 命令,查看日志 修改 test.txt...,这样就创建好本地仓库了 点击git后边对勾,将当前项目代码提交到本地仓库 注意: 项目中配置文件不需要提交到本地仓库,提交时,忽略掉即可 6.3版本切换 方式一: 控制台Version...Git->选择要切换分支->checkout 合并分支 VCS->Git->Merge changes->选择要合并分支->merge 处理分支代码 删除分支 idea

39300

【愚公系列】2021年12月 Java教学课程 29-Git流程分析和步骤

1.2开发存在问题(理解) 程序员小明负责模块就要完成了,就在即将提交发布之前一瞬间,电脑突然蓝屏,硬盘光荣下岗!...、提交操作)git add 文件名添加,将指定文件添加到暂存区git commit -m ‘提交信息’提交,将暂存区文件提交到历史仓库git log查看日志( git 提交历史日志) 操作步骤...命令,提交到本地历史仓库 使用 log 命令,查看日志 修改 test.txt 文件 添加并提交,查看日志 3.3Git图形化工具操作(理解) 创建工作目录、初始化本地 git 仓库...,这样就创建好本地仓库了 点击git后边对勾,将当前项目代码提交到本地仓库 注意: 项目中配置文件不需要提交到本地仓库,提交时,忽略掉即可 6.3版本切换(应用) 方式一: 控制台Version...选择要合并分支->merge 处理分支代码 删除分支 idea右下角->选中要删除分支->Delete 6.5本地仓库推送到远程仓库(应用) VCS->Git->Push-

41010

BFG Repo-Cleaner - 快速清除Git提交历史特定文件

BFG Repo-Cleaner(快速清除Git提交历史特定文件) 有些时候不小心上传了一些敏感文件(例如密码), 或者不想上传文件(没及时或忘了加到.gitignore里),而且上传文件又特别大时候...另一种选择 BFG是git-filter-branch之外一种更简单、更快方法,可以清除Git存储库历史不良数据: 删除 大文件 删除 密码、凭证 和其他 私人数据 git-filter-branch...最好删除所有旧克隆,因为它们会有肮脏历史,您不想冒险将其推回到您新清理repo。 例子 在所有这些示例,bfg是java -jar bfg.jar别名。...如果某个坏文件(比如10MB文件,当您指定--strip-blobs-bigger-than 5M)在受保护提交,那么它不会被删除—它将保存在您存储库,即使BFG从以前提交删除了它。...请注意,尽管这些受保护提交文件不会被更改,但是当这些提交从早期提交继续进行时,它们提交ids 将 更改,以反映更改历史—只有文件系统树SHA-1 id 将保持不变。 更快...

2.8K40

AndroidRepo 常用命令参考

译者:远方自由 转载请注明出处: http://blog.csdn.net/z2066411585 Repo使用形式如下: repo 可选元素显示在[],例如,许多命令将项目列表作为参数.../repo父目录或父目录子目录. sync ---- 下载新更改并更新本地环境工作文件.如果你运行repo sync没有任何参数,它将同步所有项目的文件....当运行repo sync,这是发生了什么事: 如果项目从未同步,那么repo sync相当于git clone. 远程仓库所有分支复制到本地项目目录....)上最近提交进行比较,显示这三个状态之间存在差异每个文件摘要....运行run status 只查看当前分支状态,状态信息按项目列出.对于项目中每个文件,使用两个字母代码; 在第一列,大写字母表示暂存区域与上次提交状态区别.

1.5K50

Git IDEA集成Git

“/”,而不是反斜杠“\” 定位Git程序 创建一个新Maven工程 2-新建工程.jpg 设置相关属性 3-设置相关属性.jpg 打开设置File->Settings 4-设置.jpg 配置Git安装目录...12-新建测试文件.jpg 方法一 右击pom.xml文件,选择Git->Add 11-添加暂存区.jpg 方法二 右击项目目录,选择Git->Add,实现项目中未添加文件全部添加到暂存区 13-添加暂存区....jpg 提交目录 右击项目目录,选择Git->Commit Directory 14-提交目录.jpg 编辑提交信息,选择提交 15-提交本地库.jpg 提交成功之后,文件名都变成了白色 16-提交成功....jpg 输入分支名 22-创建分支.jpg 切换分支 点击右下角master,单击要切换分支,选择Checkout进行切换 23-切换分支.jpg 合并分支 正常合并 修改hotfix分支test...文件内容,并提交至本地库 修改完成之后切换回master分支 选择需要合并分支,点击Merge into Current进行合并 24-正常合并.jpg 冲突合并 修改两个分支同一文件同一位置,会产生冲突

1.3K20

IDEA 玩转 Git

其他 Git 客户端工具松哥之前也有体验一些,不过感觉还是 IDEA 用起来更加省事。...token: 填一下基本信息,选一下权限即可(权限需要选择 repo 和 gist,其他根据自己需求选择): 最后会生成一个令牌,拷贝到 IDEA 即可,如下: 这就是基本配置。...提交完成后,develop 后面多了 origin 前缀,Remote Branches 也多了 develop 分支,说明提交成功。...--no-ff 参数来合并,那么步骤如下: 从 feature-login 切换回 develop 分支,然后如下: 此时我们看一眼提交日志,如下: 从这日志也可以看出,此时不是快速合并模式了...最后,选择 develop->Push,将代码提交到远程仓库。 4. pull 在 IDEA ,如需从远程仓库更新代码,点击右上角按钮即可,如下图: 好啦,这就是一个大致流程。

59950

Git 中文参考(二)

这是 git-config [1] 列表简短摘要。 -g --guides 在标准输出上打印有用指南列表。此选项会覆盖任何给定命令或指南名称。...--src-prefix= 显示给定源前缀而不是“a/”。 --dst-prefix= 显示给定目标前缀而不是“b/”。...-F --file= 从给定文件获取提交消息。使用 - 从标准输入读取信息。 --author= 覆盖提交作者。...使用--contains,仅显示包含命名提交分支(换句话说,提示提交是指定提交后代分支),--no-contains将其反面。...<remote>.fetch将它们映射到相应远程跟踪分支,并合并这些跟踪分支提示。 merge.ff 默认情况下,Git 在合并作为当前提交后代提交时不会创建额外合并提交

14910

搭建Git服务器并感受hook使用

如果你有一台自己Linux云主机,在上面搭建Git服务器比想象要简单多。...这篇文章讲解如何搭建Git服务器及使用githook机制(使用post-receive这个hook,在git服务器受到push请求,并且接受完代码提交时触发) 大致要执行下面的命令 # 创建一个名为git...使用服务器hook 每当本地push代码,还得在服务器上git pull。这样太麻烦了。git支持hook机制,类似事件通知,比如git服务器收到push请求,并且接受完代码提交时触发。...需要在hooks目录下创建post-receive文件 服务器操作 cd /usr/git_repo/gittest.git/hooks sudo cp post-update.sample post-receive.../bin/bash git pull npm install sudo pm2 restart git-deploy-demo 参考: 服务器上-Git-协议 Coding Webhook 自动部署Git

1.2K20

看完这篇还不会用Git,那我就哭了!

至此,你项目中尚未跟踪任何内容。 添加并提交 要开始对现有文件进行版本控制,你应该先跟踪这些文件并进行初始提交。要做到这一点,你首先需要将文件添加到 Git ,并将它们附加到 Git 项目中。...我们可以执行以下操作,而不是试图查找所有有更改文件并逐个添加它们: # 逐个添加文件 git add filename # 添加当前目录所有文件 git add -A # 添加当前目录所有文件更改...commit ID 文件更改历史记录 git blame 'filename' -l 日志 ### 显示存储库中所有提交列表 该命令显示有关提交所有信息,例如提交ID,作者,日期和提交消息 git...log ### 提交列表仅显示提交消息和更改 git log -p ### 包含您要查找特定字符串提交列表 git log -S 'project' ### 作者提交清单 git log...git log --oneline ### 显示昨天以来仓库提交列表 git log --since=yesterday ### 显示作者日志,并在提交消息搜索特定术语 git log --grep

70230

提交文件在.gitignore加入忽略规则不生效原因和解决

上次介绍《GitHub Desktop清除本地缓存》,现在VS2019和VS2022自带了Git功能,一般不需要安装GitHub Desktop了,但遇到类似的“Git-忽略规则(.gitignore...配置)不生效”或者“解决已提交文件在.gitignore中加入忽略后无效问题” 这里介绍另外一种处理办法,那就是安装Git命令行客户端:http://git-scm.com/download/win...安装完毕后,找到你源码仓库所在文件目录,鼠标右键点击,选择Git Bash Here。...会看到如下弹出界面 输入如下命令: git rm -r --cached . git add . git commit -m 'update .gitignore' 执行完毕,就搞定了!...解释一下这3行代码意思: 1、删除本机Git缓存(Git记录,而不是文件本身) 2、将所有文件重新提交 3、提交到本地当前分支

1.9K30

从仓库移除敏感信息

要从仓库历史记录完全删除不需要文件,你可以使用 git filter-branch命令或 BFG Repo-Cleaner。...git filter-branch 命令和 BFG Repo-Cleaner 会重写你版本库历史记录,这会更改你修改现有提交和任何相关提交SHA。更改提交SHA可能会影响仓库打开请求。...我们建议在从仓库删除文件之前合并或关闭所有打开请求。 你可以使用 git rm 从最新提交删除文件。...从仓库历史清除文件 使用 BFG BFG Repo-Cleaner 和 git filter-branch 类似,用于删除不需要文件,是一种更快速、更简单替代方法。...告诉你同事 rebase 而不是 merge 它们创建任何分支,这些分支是从旧(受污染)存储库历史创建。一次合并提交可能会重新引入一些或所有你刚才去除清除问题受污染历史记录。

93020

20个你(可能)不知道Git命令

如果你曾经浏览git手册(或运行man git),那么你会注意到git内容比我们大多数人日常使用多得多。...使用 git archive 将包括所有的 repo 历史,所以它可以很容易地被提取回它原始形式。该命令还包括很多额外选项,所以你可以准确地定制哪些文件包括在归档,哪些不包括。...Git Stripspace 使用git stripspace来格式化给定文件空白处 最好做法是避免在行尾留白,避免出现多个连续空行,避免在输入开头和结尾出现空行,并以新行结束每个文件。...这就是大文件存储作用--它使你能够将这些资产存储在其他地方,同时保持它们在git可追踪性,并保持相同访问控制/权限。LFS工作原理是将这些文件替换成文本指针,在git中进行跟踪。...如果你老板要求你每天做一个总结,对昨天工作进行更新,但你总是记不住你到底做了什么--这个是为你准备 它将显示一个格式良好列表,列出在给定时间范围内所做一切。

84840

Git 中文参考(六)

使用标记修复分支 一些其他 SCM 系统允许用户从多个文件创建标签,这些文件不是来自相同提交/变更集。或者创建标记,这些标记是存储库可用文件子集。...或者 reflogs(可以引用稍后修改或重绕分支提交)。如果您希望某些对象被删除而它们不是,请检查所有这些位置,并确定在您情况下删除这些引用是否有意义。...对于那些操作,您可能需要考虑 BFG Repo-Cleaner ,一种基于 JVM git-filter-branch 替代方案,对于这些用例通常至少快 10-50 倍,并且具有完全不同特性:...如果指定它被添加到存档文件名前面。 git archive 在给定树 ID 时与给定提交 ID 或标记 ID 时行为不同。在第一种情况下,当前时间用作存档每个文件修改时间。...git bundle 打印缺失提交列表(如果有),并以非零状态退出。 list-heads 列出捆绑定义引用。如果后跟一个引用列表,则只打印出与给定引用匹配引用。

20610

Gephi源码调试及Git同步

克隆项目到本地 继续上述过程,首先进入到NetBeans项目空间目录(不是必须)。然后单机鼠标右键,这时应该有Git Bush Here选项,点击后在弹出黑框输入如下命令: ?...打开D:\Program Files\Apache\maven\conf\settings.xml文件,查找下面这行代码: /path/to/local/repo localRepository节点默认是被注释掉...上述打开Gephi就是具有完整功能客户端。 修改布局源代码:类似的,找到模块LayoutPlugin,双击打开,然后在源包中就是全部布局算法源码了,针对具体代码文件进行修改即可。...右键所修改模块->点击Git->点击提交->添加修改备注->点击提交 3.2....右键所有该模块->点击Git->点击远程->点击推入->选择配置Git资源库位置,如果没有默认资源库则需要配置->全部下一步结束

1.6K20
领券