git-filter-branch相关内容

如何使用index-Filter&;co从Git存储库中提取一个具有提交历史的文件?

我有一个从SVN到Mercurial再到Git的Git repo,我只想解压缩一个源文件。我还有一些奇怪的字符,比如aÌ(编码不匹配破坏了Unicodeä)和文件名中的空格。 如何从存储库中提取一个文件并将其放在新存储库的根目录下? 推荐答案 现在有一个新命令git filter-repo。 它有更多的可能性和更好的性能。 请参见man page ..
发布时间:2022-03-30 20:51:27 其他开发

标签可以在 git filter-branch 和 rebase 之后自动移动吗?

edit 问题归结为“是否也可以指示 git rebase 重新设置标签?"但对原始问题的回答也会有所帮助. 询问 如何将过去添加到 git 存储库? 我遵循 这些说明一个>.然后我重新定位以包含仅在快照中的文件,请参阅 这里. 因为历史被重写(由 git filter-branch 或 git rebase 或两者兼而有之?)所有标签仍在原始时间线上*,我想以某种方式 ..
发布时间:2022-01-18 20:58:57 其他开发

如何在不修改 git 历史记录的情况下在我的源代码上运行代码格式化程序?

我正在尝试使用代码格式化工具格式化整个 repo.这样做时,我想保留有关谁提交了哪一行的信息,以便像 git blame 这样的命令仍然显示正确的信息.我的意思是它应该显示之前编辑过每一行的作者(在格式化之前). 有一个 git filter-branch 命令,它允许您从一开始就对 repo 的每个修订版运行一个命令. git filter-branch --tree-filter '\ ..
发布时间:2022-01-12 09:05:32 其他开发

改写历史 git filter-branch 创建/拆分为子模块/子项目

我目前正在将一个 cvs 项目导入 git. 导入后,我想重写历史记录以将现有目录移动到单独的子模块中. 假设我有一个这样的结构: 文件1 文件2 文件3 目录1 目录2 图书馆 现在我想重写历史记录,以便目录 library 始终是一个 git 子模块.比如说,把指定的目录拆分成自己的子模块/子项目 这是我当前的代码: File rewrite-subm ..
发布时间:2022-01-04 16:11:19 其他开发

从 git 历史记录中删除已删除的文件

我正在尝试从我的 git 存储库中拆分一个子项目.然而不像将子目录分离(移动)到单独的 Git 存储库中我在它自己的子目录中没有它(将它移入并执行上述操作只会在移动后产生历史记录). 我已经将要从中拆分子项目的分支克隆到它自己的存储库中,并删除了子项目未使用的所有内容,因此基本上我可以将其用作子项目的存储库. 现在我想删除不再存在于该存储库中的所有文件的历史记录,以便仅保留使其成为后代 ..
发布时间:2022-01-04 15:01:28 其他开发

如何在保留子目录的同时拆分 git 存储库?

我想要的是类似于这个问题.但是,我希望拆分为单独存储库的目录保留为该存储库中的子目录: 我有这个: foo/.git/酒吧/巴兹/曲/ 我想把它分成两个完全独立的存储库: foo/.git/酒吧/巴兹/曲/.git/qux/# 注意:还是一个子目录 如何在 git 中执行此操作? 我可以使用这个答案中的方法,如果有一些方法可以将所有新存储库的内容移动到整个历史记录中的子目录中. ..
发布时间:2021-12-28 11:55:54 其他开发

将大型 Git 存储库拆分为许多较小的存储库

在成功将 SVN 存储库转换为 Git 后,我​​现在有一个非常大的 Git 存储库,我想将其分解为多个较小的存储库并维护历史记录. 那么,有人可以帮助分解看起来像这样的存储库吗: MyHugeRepo/.git/目录_A/目录_B/目录_1/目录_2/ 进入两个看起来像这样的存储库: MyABRepo/.git目录_A/目录_B/My12Repo/.git目录_1/目录_2/ 我已 ..
发布时间:2021-12-28 11:55:22 其他开发

从 Git 历史记录中删除大文件

我已经阅读了多个关于使用 filter-branch 或 BFG 来完成这项任务的建议,但我觉得我需要进一步的建议,因为我的情况有点奇怪. 我必须管理两个存储库,一个基本上是另一个的克隆,理想情况下,我希望每天将更改从源提取到克隆中.但是,原始存储库在其历史记录中包含非常大的文件,超出了 Github 的大小限制.所以我必须删除这些文件,但同时,除了对这些特定文件的更改之外,我不想损害现有的 ..

如何从 git 存储库中删除旧历史?

恐怕我找不到与此特定场景相似的内容. 我有一个历史悠久的 git 存储库:500 多个分支,500 多个标签,可以追溯到 2007 年年中.它包含约 19,500 次提交.我们希望删除 2010 年 1 月 1 日之前的所有历史记录,以使其更小且更易于处理(我们将在存档存储库中保留一份完整的历史记录副本). 我知道我想要成为新存储库根的提交.但是,我无法找出正确的 git mojo 来 ..
发布时间:2021-12-06 09:23:04 其他开发

使用 Git 更改项目的第一次提交?

我想在我的项目的第一次提交中更改某些内容,而不会丢失所有后续提交.有没有办法做到这一点? 我不小心在源代码的评论中列出了我的原始电子邮件,我想更改它,因为我收到了 GitHub 索引机器人的垃圾邮件. 解决方案 正如 ecdpalma 所提到的 下面,git 1.7.12+(2012 年 8 月)为 git rebase 增强了选项 --root: "git rebase [- ..
发布时间:2021-12-06 09:22:45 其他开发

您如何修复错误的合并,并将您的良好提交重播到固定合并上?

我在几次提交前不小心将不需要的文件(filename.orig,同时解析合并)提交到我的存储库,直到现在我才注意到它.我想从存储库历史记录中完全删除该文件. 是否可以重写更改历史记录,以便 filename.orig 从未添加到存储库中? 解决方案 如果您的情况不是问题中描述的情况,请不要使用此方案.此秘籍用于修复错误的合并,并将您的良好提交重播到固定合并上. 虽然 filte ..
发布时间:2021-12-06 08:40:51 其他开发

将子目录分离(移动)到单独的 Git 存储库中

我有一个 Git 存储库,其中包含许多子目录.现在我发现其中一个子目录与另一个子目录无关,应该分离到一个单独的存储库. 如何在保持子目录中文件的历史记录的同时执行此操作? 我想我可以制作一个克隆并删除每个克隆不需要的部分,但我想这会在检查旧版本等时为我提供完整的树.这可能是可以接受的,但我更愿意能够假设这两个存储库没有共享历史记录. 为了清楚起见,我有以下结构: XYZ/.gi ..
发布时间:2021-12-06 08:34:58 其他开发

如何将一个子目录从一个git存储库中的分支移动到另一个存储库中的分支,并保留历史记录?

我有一个包含实用程序库的目录,这些实用程序库是在一个git存储库中的一个分支中开发的,但事实证明它们确实属于另一个项目中的另一个目录.我已经阅读并尝试了Greg Bayer的将文件从一个Git存储库移动到另一个,多次保存历史记录,但是我无法保存历史记录.我正在尝试在非master分支下进行所有操作,以提高安全性,因为无论如何该项目还没有准备好合并回master. 这是我到目前为止正在做的事情 ..
发布时间:2021-05-11 18:31:22 其他开发

git-filter-repo无法读取我的邮件映射文件

继续我上一个问题,我需要使用 git filter-repo 以便修改作者存储库日志中记录的一些提交的名称和提交者名称.但是我对此有些麻烦. 问题 我的本​​地存储库目录中有一个名为 my-mailmap 的文件,该文件已格式化 CorrectName CorrectName 是我要替换日志中记录的名称的新 ..
发布时间:2021-05-10 20:52:12 其他开发

将文件以及git中的历史记录移动到其他文件夹

首先,我看了这个问题,它与我在此处要解决的问题完全相同.但是问题是问题中给出的解决方案对我不起作用. 给出的解决方案是这样的: git filter-branch --tree-filter" cd x;mkdir -p p/q;mv [文件和子目录] p/q";头 移动文件& x 下的子目录到 x/p/q . 这正是我想要的.但这在我尝试时不起作用. 我的目录结构是 ..
发布时间:2021-05-10 20:48:52 其他开发

git filter-branch-放弃一系列提交中对一组文件的更改

说我有一个分支 dev ,并且我想放弃对在一组提交中对一组文件所做的所有更改 dev 分支,因为它与 master 不同.如果在此范围内的提交仅涉及那些文件,我希望将其删除.我最接近的是: git checkout开发git filter-branch --force --tree-filter'git checkout master-\a/b/c.png \...'--prune-empty ..
发布时间:2021-05-10 20:37:51 其他开发

更改Git历史记录中的电子邮件地址

我已经在git仓库上工作了一段时间,并做了一些提交.我一直在php文件中使用文档块,包括我的私人电子邮件地址,如下所示: /*** Bla bla bla.** @作者:Nic*/ 现在,我创建了一个新的电子邮件地址并更新了文档栏,用新的地址替换了旧地址.但是此更改仅适用于我更改了文档之后的提交. 如何才能从git的历史记录中完全删除旧电子邮件地址,并用新地 ..
发布时间:2021-05-10 20:37:48 其他开发