问题标签 [git-rewrite-history]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1479 浏览

git - Git:如何永久删除提交的文件?

我提交了一个不应该在 git 存储库中的文件。我已经删除它并提交了删除,但我仍然可以通过 git 历史记录访​​问该文件。

如何永久删除已提交的文件,使其不留痕迹?

0 投票
5 回答
5546 浏览

git - 从 git repo 中删除“.git”目录?

我正在尝试将 git repo 从 Kiln 迁移到 Github。我可以很好地添加新的遥控器,但是当我尝试将 master 推送到新的遥控器时,我收到以下错误:

Commita9ee490ac00987835de30bdbc851da5e8d45d28b中包含以下文件:

显然,过去有人使用hg, 在子目录中签入了完整的 git 存储库。

我想完全杀死该目录,但在从 git 历史记录中删除该文件时遇到了麻烦。

推送 git repo的答案因错误而失败: contains '.git'没有帮助,因为我将 repo 作为 git repo,而不是一个 mercurial 的。

我试过git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch .git'了,但我得到了错误:

历史似乎没有改变。我的git知识有限。任何人都可以帮忙吗?

0 投票
2 回答
892 浏览

git - 重命名文件夹后的Git过滤

我有这种情况。

我正在将我的存储库重构为两个 src 文件夹,以便我可以使用 git filter-branch 拆分文件夹。

所以我创建了 AAA 和 BBB 文件夹而不是 src

问题是,在我按照分离(移动)子目录进入单独的 Git 存储库后,我得到了没有历史记录的分离 git 提交。

0 | 0 <--- 在这里打断 0 | 0 | 0 | 0 ...

我也尝试过如何拆分 git 存储库并遵循目录重命名?

通过将 BBB 和 AAA 放入 Name1 和 Name2 但它没有工作..

对此有任何帮助,我知道可以做到:)

0 投票
1 回答
11891 浏览

git - 从 git repo 和提交历史中递归删除所有二进制文件

我已经阅读了一些关于从 git 提交历史中删除大型二进制文件的 不同 线程,但我的问题只是有点不同。因此,我在这里的问题是理解和确认这些步骤 -

我的 git 仓库是~/foo. 我想从 repo 内的一个目录中删除所有 *.jpg、*.png、*.mp4、*.ogv (等等),特别是从~/foo/public/data.

步骤 1. 删除文件

步骤 2. 将二进制文件扩展名添加到 .gitignore 并提交 .gitignore

步骤 3. 推动一切

我在上面的正确轨道上吗?我想在剪一次之前测量两次,可以这么说。

更新:好吧,上面给了我错误

所以我上树到顶层并重新运行命令,这一切都奏效了。

0 投票
1 回答
195 浏览

git - 如何通过 git 为所有提交重命名/合并目录

让存在具有以下目录结构的 Git 存储库(它是从 SVN 转换而来的):

SVN repo历史注释:

每年都有一些切割器机构采用最新版本并将其复制到同一回购中具有下一个编号的新版本。所以任何版本的子目录/文件结构几乎相同。但是每个版本都有不同的历史时期。


对于每个提交(漏洞仓库) 如何: 1 将所有 ReleaseX 根重命名为一个名为“Release”的目录?2 为所有版本的任何文件保留/统一提交历史?

结果仓库必须如下所示:


或者,我可以将每个 ReleaseX 从 svn 重新转换为单独的 repoX。对于每个 repoX,我需要将 ReleaseX 重命名为 Release。比我需要联合所有回购...... Ugrhh。但我认为这是一个rakeway

0 投票
1 回答
2530 浏览

git - 删除 git filter-branch 中的很多文件

我正在将存储库从 svn 迁移到 git。

在这最后一步中,我想从历史记录中删除大量不需要的文件。

我正在尝试以下命令:

但是它说参数列表太长了。

我可以这样重写:

但它会运行 filter-branch 很多次,而且历史很长.. 所以,它会花费太多时间。

有没有更快的方法来过滤分支删除大量文件?

0 投票
5 回答
12013 浏览

git - 如何从 Git 的历史记录中永久删除提交?

如何从 Git 的历史记录中永久删除提交?

团队中的一位开发人员不小心提交了一个 200 MB 的文件并将其推送到我们的 Git 服务器。几天后它被删除了,但历史记录在那里。我们的代码文件只有大约 75 MB,我们有 4 个分支。由于 200 MB 的文件提交,历史记录被保留,我们的项目文件夹(特别是隐藏的 .git 文件夹)的大小已经膨胀到接近 700 MB。如何从 git 中永久删除两个签入(提交大文件,删除大文件),就好像从未发生过一样?如果这很重要,我正在使用`TortoiseGit。

0 投票
2 回答
1936 浏览

git-filter-branch - 在所有分支上创建 git-filter-branch

我们正在进行从 cvs/bugzilla 到 git/Stash/Jira 的转换。我正在测试使用git filter-branchjira 问题 ID 重写提交消息中的 bugzilla bug #s。这有效,除了它只影响主而不影响任何分支。我使用-- --all但没有签出任何分支。那有必要吗?确切的命令如下:

注意 - gitBugzillatoJira.shruby​​ 脚本负责将 bugzilla 编号交换为 Jira 问题 ID。

有任何想法吗?

0 投票
1 回答
306 浏览

git - 缩小 Git Repo - 数据包中的对象,而不是提交中的对象

我正在尝试缩小大约 2GB 的 Git 存储库。

我正在关注 ProGit 书中第 9 章(9.7)的“删除对象”部分:http: //git-scm.com/book/en/Git-Internals-Maintenance-and-Data-Recovery

运行git gc,然后是git verify-packandgit rev-list命令后,我发现了一个.tar大约 118MB 的文件。我根本不需要它在我的回购中。它需要永远摧毁。

但是当我试图找出哪些提交使用了该文件时,我什么也没得到:

这是否意味着该文件不在存储库历史记录中?如果是这种情况,我可以离开它还是当我这样做时它仍然会被推上去git push

如果是这种情况,我该如何摆脱它。

0 投票
4 回答
1560 浏览

git - git-filter-branch 删除字符串,但其中字符串包含 $ ' \ 和其他字符

我正在尝试改写历史,使用:

git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all

本教程中所述。

但是,我的密码字符串包含各种非 AZ 字符,例如 $ ' 和 \,而不是上面示例中简单的 'PASSWORD1' 类型的字符串。

有人可以解释我需要什么转义吗?我无法在任何地方找到它,而且我已经为此奋斗了好几个小时。