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

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

BFG Repo-Cleaner(快速清除Git提交历史中的特定文件) 有些时候不小心上传了一些敏感文件(例如密码), 或者不想上传的文件(没及时或忘了加到.gitignore里的),而且上传的文件又特别大的时候...你的当前文件是神圣的... BFG对待你就像一个改过自新的酒鬼:你过去犯过一些错误,但现在你已经改过自新了。因此,BFG假定您的最新提交是一个好的提交,其中没有您希望从历史记录中删除的脏文件。...如果某个坏的文件(比如10MB的文件,当您指定--strip-blobs-bigger-than 5M)在受保护的提交中,那么它不会被删除—它将保存在您的存储库中,即使BFG从以前的提交中删除了它。...请注意,尽管这些受保护的提交中的文件不会被更改,但是当这些提交从早期的脏提交继续进行时,它们的提交ids 将 更改,以反映更改的历史—只有文件系统树的SHA-1 id 将保持不变。 更快......BFG的发行是希望它将是有用的,但没有任何保证;甚至没有隐含的适销性或适合某一特定用途的保证。有关更多细节,请参阅GNU通用公共许可证。

3K40

9.2 Git 与其他系统 - 迁移到 Git

@geemail.com> 为了获得 SVN 使用的作者名字列表,可以运行这个: $ svn log --xml | grep author | sort -u | \ perl -pe 's/.*...Perforce Git Fusion Git Fusion 使这个过程毫无痛苦。 只需要使用在 Git Fusion 中讨论过的配置文件来配置你的项目设置、用户映射与分支,然后克隆整个仓库。...打开文件找到列开始与结束的字符并替换,在下面的命令行中,cut 命令的参数 11-20 就是我们找到的: PS> cat AUTHORS_TMP | cut -b 11-20 | tail -n+3 |...如果没有一个工具适合你,需要一个不知名的工具,或者需要更大自由度的自定义导入过程,应当使用 git fast-import。 这个命令从标准输入中读取简单指令来写入特定的 Git 数据。...(file) inline_data(file) end 注意:因为大多数系统认为他们的版本是从一个提交变化到另一个提交,fast-import 也可以为每一个提交执行命令来指定哪些文件是添加的、删除的或修改的与新内容是哪些

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    1.3 起步 - Git 基础

    概念上来区分,其它大部分系统以文件变更列表的方式存储信息。...这类系统(CVS、Subversion、Perforce、Bazaar 等等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。 Figure 1-4....比如,用 Perforce,你没有连接服务器时几乎不能做什么事;用 Subversion 和 CVS,你能修改文件,但不能向数据库提交修改(因为你的本地数据库离线了)。...这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。...如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

    64960

    TW洞见 | 胡凯:Mock不是测试的银弹

    开发者编写高质量测试的征途上可谓布满荆棘,数据库、中间件、不同的文件系统等复杂外部系统的存在,令开发者在编写、运行测试时觉得苦恼异常。...另外,外部系统缓慢的响应速度(HTTP访问、启动服务、创建删除文件等),还可能会造成测试运行时间过长、成 本过高。...是在真实环境下运行Perforce命令行所采集的标准输出(stdout)样本, 通过mock perforce对象,我们可以轻易的控制changes方法的返回值,让验证解析逻辑的正确性变得非常容易,采用...很多情况下,外部系统处于某种特定的状态是测试得以通过的条件,譬如HTTP服务必须启动完 毕,某个文件必须存在等。...我们很容易在项目中发现只能在特定环境下通过的测试,这个特定环境可能是特定的操作系统,也可能是特 定的浏览器等,之所以会产生这些测试通常是开发者需要在源码中进行一些特定环境的hack,它们并不适合在所有环境下运行

    1.9K60

    8.1 自定义 Git - 配置 Git

    commit.template 如果把此项指定为你的系统上某个文件的路径,当你提交的时候, Git 会使用该文件的内容作为提交的默认信息。...首先, 从 http://www.perforce.com/downloads/Perforce/ 下载 P4Merge。 接下来,你要编写一个全局包装脚本来运行你的命令。...如果正准备应用的补丁存有特定的空白问题,你可以让 Git 在应用补丁时发出警告: $ git apply --whitespace=warn 或者让 Git 在打上补丁前自动修正此问题:...这个操作很耗时间,很有可能会拖慢提交的过程,特别是当库或推送的文件很大的情况下。...要删除远程分支,必须从服务器手动删除引用文件。 通过用户访问控制列表(ACL)也能够在用户级的粒度上实现同样的功能,你将在 使用强制策略的一个例子 一节学到具体的做法。

    95630

    Windows上写 Python 代码的王炸组合!

    测试框架设置完成并显示测试后,你可以单击状态栏(Status Bar)上的 Run Tests 并从命令面板中选择一个 option 来运行所有测试: 通过在 VS Code 中打开测试文件,单击状态栏上的....vscode/launch.json 的文件夹下创建一个调试配置文件,它允许用户设置特定的 Python 配置以及调试 Django 和 Flask 等特定应用程序的设置。...关闭编辑器中的 launch.json 文件,然后从 Configuration 下拉列表中为应用程序选择正确的配置。...在 VS Code 中提交最近的更改相当简单。修改后的文件显示在 Source Control 视图中,并带有 M 标记,而新的未跟踪文件使用 U 标记。...将鼠标悬停在文件上然后单击加号(+)可以暂存更改。在视图顶部添加提交消息,然后单击复选标记来提交更改: 你也可以在 VS Code 中将本地提交(local commits)推送到 GitHub。

    4.9K20

    Git最全系列教程(一)

    版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。...它的工作原理基本上就是保存并管理文件补丁(patch)。文件补丁是一种特定格式的文本文件,记录着对应文件修订前后的内容变化。...这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。...比如 Perforce,如果不连到服务器,几乎什么都做不了(译注:默认无法发出命令 p4 edit file 开始编辑文件,因为 Perforce 需要联网通知系统声明该文件正在被谁修订。...所以,我们可以从文件所处的位置来判断状态:如果是 Git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态

    69920

    在 Windows上写 Python 代码的最佳组合!

    测试框架设置完成并显示测试后,你可以单击状态栏(Status Bar)上的 Run Tests 并从命令面板中选择一个 option 来运行所有测试: 通过在 VS Code 中打开测试文件,单击状态栏上的....vscode/launch.json 的文件夹下创建一个调试配置文件,它允许用户设置特定的 Python 配置以及调试 Django 和 Flask 等特定应用程序的设置。...关闭编辑器中的 launch.json 文件,然后从 Configuration 下拉列表中为应用程序选择正确的配置。...在 VS Code 中提交最近的更改相当简单。修改后的文件显示在 Source Control 视图中,并带有 M 标记,而新的未跟踪文件使用 U 标记。...将鼠标悬停在文件上然后单击加号(+)可以暂存更改。在视图顶部添加提交消息,然后单击复选标记来提交更改: 你也可以在 VS Code 中将本地提交(local commits)推送到 GitHub。

    5.2K20

    Git与Repo快速入门

    Systems,简称 CVCS )应运而生,比如Subversion,Perforce。...像Subversion和Perforce等版本控制系统都是记录文件每个版本之间的差异,这就需要对比文件两版本之间的具体差异,但是GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变...三、GIT文件操作 版本控制就是对文件的版本控制,对于Linux来说,设备,目录等全是文件,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上...轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。...查看修改 repo diff 对指定的Project列表或所有Project执行命令COMMAND,加上-p参数可打印出Project的路径。

    1K101

    UE4源码Build上传Perforce

    UE4每次升级个版本总是要提交大量文件到Perforce, 是件很麻烦的事. 我们的引擎编译好了会连同Binaries一起上传, 美术和策划都可以直接使用跟程序一样的版本....这样的话, Perforce上的引擎就需要有这些注意事项: 引擎目录完全包含所有代码和引擎依赖资源 引擎编译输出的dll, exe等也都需要提交, 保证策划和美术能够直接拉取引擎版本 引擎编译过程中会写入的文件...在这里就记录一下整个过程, 免得下次升级时又要重新找命令规则步骤之类的: 从github拉取UE4的release版本 拷贝整个目录到Perforce Workspace, 需要避免.git文件夹也拷过来..., 所以我们需要递归提交这些文件, 并加上writable标记 for /f "delims=" %a in ('dir ....如果要把这些命令写到批处理文件里, 注意需要把%a改成%%a. 最后, 再提交一次, 完成

    1.9K40

    13 个 npm 快速开发技巧

    wait-on 节点模块提供了一种方便的方法来确保进程只在某些进程就绪时发生:在我们的例子中,我们有一个特定的端口。 例如,这是我在使用React前端的Electron项目中使用的dev脚本。...但是有一种更方便的方法可以获得脚本列表,可以立即运行该列表:为此,全局安装 NTL (npm任务列表)模块: npm i -g ntl 然后在项目文件夹中运行ntl命令,可以获得一个可用脚本列表,并可以选择其中一个运行...从命令行编辑 package.json package.json是一个常规的json文件,因此可以使用工具库json从命令行进行编辑。...使用自定义npm init脚本将你的第一个 Commit 提交到 GitHub 为了将git命令合并到.npm-init.js文件中,需要一种方法来控制命令行。...存储库URL,如果提供,我们将生README.md文件,并启动我们的第一次提交。

    1.5K50

    Linux初级运维常用命令面试问题

    7、如何从命令行查看域SPF记录? 8、如何识别Linux系统中指定文件(/etc/fstab)的关联包? 9、哪条命令用来查看bond0的状态?...$(uname -r) 如果你想要给特定的内核版本创建初始化内存盘,你就用所需的内核名替换掉 uname -r。...cpio就是复制入和复制出的意思。cpio可以向一个归档文件(或单个文件)复制文件、列表,还可以从中提取文件。 5、patch命令是什么?如何使用?...当aspell程序主要被其它一些需要拼写检查能力的程序所使用的时候,在命令行中作为一个独立运行的工具的它也能十分有效。 7、如何从命令行查看域SPF记录? 我们可以用dig命令来查看域SPF记录。...所有提交的任务都被放在 /var/spool/at 目录下并且到了执行时间的时候通过atd守护进程来执行。 20、linux中lspci命令的作用是什么?

    3.8K50

    Sourcery 的 Swift Package 命令行插件

    给动词一个合理的名称很重要,因为这是从命令行调用插件的方式。 插件需要向用户请求写入包目录的权限,因为生成的文件将被转储到该目录。 为插件定义了一个二进制目标文件。...这将使 Sourcery 神奇的工作,并使包可配置。 可执行文件路径的 URL 是从命令的上下文中检索的。 创建一个进程,并将 Sourcery 的可执行文件的 URL 设置为其可执行文件路径。...有两种方法: 命令行 运行插件的一种方法是用命令行。可以通过从包目录中运行 swift package plugin --list 来检索特定包的可用插件列表。...此时,你可能会想,为什么我要费心编写一个插件,仍然必须从命令行运行,而我可以用一个简单的脚本在几行 bash 中完成相同的工作?...如果你正好在使用 Xcode 14,你可以通过在文件资源管理器中右键单击包,从列表中找到要执行的插件,然后单击它来执行包的任何命令。 下一步 这是插件的初始实现。我将研究如何改进它,使它更加健壮。

    1.2K20

    30分钟Git命令入门到放弃

    你可以从掌握一些简单,强大的命令开始,逐步去学习。(这就是这篇文章要讲的)。好了,上来! 基本了解 Git命令是一些命令行工具的集合,它可以用来跟踪,记录文件的变动。...已经有一系列的版本控制系统,比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。...Windows – 推荐使用git for windows,它包括了图形工具以及命令行模拟器。 OS X – 最简单的方式是使用homebrew安装,命令行执行 ?...但我还是推荐你使用命令行,下面的内容就都是命令行的。 2.配置Git 安装完git,首要任务是配置我们的信息,最重要的是用户名及邮箱,打开终端,执行以下命令。 ?...2.回滚某个文件到之前的版本 git 允许我们将某个特定的文件回滚到特定的提交,使用的也是 git checkout。

    87030
    领券