问题标签 [git-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 投票
0 回答
376 浏览

git - 错误:尝试重写历史时,pack-objects 死于信号 9517

我正在与之交互的 git 存储库有一个巨大的包文件(1.7Gb!),所以我尝试关注这篇文章。我能够使用git filter-branch,但是当我运行时,git gc --aggressive --prune=now我得到:

我试图将线程降低到已经使用的 2 和 1,git config --global pack.threads "2"但它没有帮助。

谢谢!

0 投票
1 回答
1523 浏览

git - 如何通过删除 size-hungry 分支来减小远程仓库的大小?

在我们的 git repo 中,其中一个分支包含已提交并推送到远程 repo 进行测试的二进制文件,但这导致了填充我们 repo 大小的意外后果。在此处此处进行了一些研究之后,提供了许多解决方案差异很大的场景。我想知道我们是否有一个更简单的场景来避免我们可能会利用的“git push --all --force”(需要更多的协调)。

在我们的例子中,我们不再关心分支是否存在并且完全可以删除它(连同它的历史等)。我们可以将所涉及的工作重新提交到另一个分支。由于分支尚未合并到其主分支,我们是否可以完全删除分支。假设引用在提交的二进制文件的分支中是自包含的,是否有更简单的解决方案?

根据研究,提出了以下解决方案:

然而,他们假设读者想要保留历史并因此删除有问题的二进制文件,重写历史和/或问题仍然本地化到本地存储库。如果问题是远程的,则需要对本地进行修复,然后将 --all 推送到远程。

在这种情况下,我们已经删除了分支并在一个新的分支上重新提交了工作,但是大小还没有改变,我们还需要做什么呢?由于数据已本地化到已删除的分支并且允许删除分支,是否有更简单的解决方案?我们也不确定 git 是否会以某种方式保留二进制文件,以便在历史的其他部分保留对它们的引用。远程服务器是否需要垃圾收集?修剪参考文献?

0 投票
1 回答
200 浏览

git - 编辑 git 历史的影响

我们的一个存储库的状态非常糟糕。有人不小心将 4 GB 的二进制文件提交到 repo 并将其推送到远程 master。然后,他们说:“哎呀!” 并恢复了该提交。

不幸的是,git 只存储 diff,并且因为它不能真正存储二进制文件的 diff,所以它将整个文件存储在历史记录中。而且因为它在历史记录中包含了两次(一次是添加时,一次是删除时),所以现在 repo 的大小为 8 GB。这给我们带来了巨大的问题,并使我们的构建时间比他们需要的时间长了大约一个小时。

我知道我可以使用 rebase 和 filter-branch 之类的工具来删除这些提交或从 git 历史记录中删除这些文件。然而,关于这些工具的每一篇文章或文档都说“如果你想要编辑的提交已经被推送到远程,那么不要这样做!重写历史是一个坏主意!!!”

但它并没有真正解释改写历史的影响。我们真的别无选择——我们必须从历史记录中删除这些文件。但是,由于所有关于重写 git 历史的危险的可怕警告,我们非常害怕实际尝试删除这些文件。

因此,我希望有帮助的 StackOverflow 用户能够解释使用过滤器分支删除这些大文件可能产生的影响,或者是否有一些我们不知道的更好的解决方案。

0 投票
1 回答
3509 浏览

git - 按作者或分支过滤 git 日志

在我的工作流程中,我通常只对我自己的分支和一些特定的分支感兴趣,例如stagingormaster并且希望我git log能够反映这一点。我想出了这个命令:

问题是authorandbranches过滤器似乎与逻辑运算符链接and,这意味着我可以看到我的所有分支或暂存,但不能同时看到两者。

换句话说,我只想查看我是作者的提交以及名为stagingbranch 的分支的所有提交(无论作者是谁),只需一个命令。

有没有办法做到这一点?

0 投票
1 回答
93 浏览

git - 在 GIT 历史记录中搜索文件?

所以我的一个项目中有一个文件被删除了,没有人知道什么时候或为什么,它就消失了。(可能几个月)。问题是我只知道名字的一部分,而不是全名。我如何搜索在提交(不是提交消息)中添加/删除的文件?

该文件应该看起来像something_something.*.xml,有什么想法吗?[* 可以是字符串,也可以是下划线、破折号或圆点分隔的多个字符串]

0 投票
0 回答
1793 浏览

visual-studio-code - Git History 扩展在 VS Code 中不起作用

我之前在 VS Code 中使用过非常不错的 Git History 扩展,但目前当我单击它的按钮或从命令面板调用它时,什么也没有发生。所有其他 git 功能都工作正常。我刚刚卸载并重新安装了扩展程序,但无济于事。

还有其他人有这个问题吗?

0 投票
1 回答
811 浏览

git - Github:在分叉的 master 上获取和 rebase fork

我创建了一个项目的分支,并向我们的 master. 在某个时间点,我不假思索地用强制推动改写了历史,因为我不能“无缘无故”推动,有时你只是想看到世界燃烧。

现在一切都很好,但是在我的仓库中的最后约 100 次提交upstream不再被认为是相同的:我看到“提前 240 次提交”而不是“提前 40 次提交”。

是否可以获取上游 master 并在其上重新调整我们 master 的提交,并将其强制推送回我们的 master,以便我们和他们的与除我之外的所有先前提交同步?如果是这样,怎么做?请具体。

0 投票
1 回答
38 浏览

git - 如何获取与文件夹相关的所有提交并将其放入新的仓库中?

我有一个像

我想删除

并创建一个新的存储库,其中包含与该文件夹相关的所有 git 历史记录,并且还需要包含文件。

主要考虑是仅保留与该文件夹相关的历史记录并删除所有其他不需要的历史记录

最好的方法是什么?

0 投票
0 回答
33 浏览

google-cloud-platform - 如何获取在 Google Cloud Repositories 中推送新修改的历史信息?

当我将新修改的代码推送到 Google Cloud Repositories 时,我正在构建一个 Web 应用程序以接收消息。

我尝试使用 Google PubSub 服务来帮助我在推送事件活动时获取一些信息,但我仍然无法获取有关提交了新代码的信息。

我尝试访问 Google Cloud Repositories 的 API,但仍然无法获得有关提交描述的任何信息。

如何在我的情况下获得提交描述?

0 投票
3 回答
1052 浏览

github - 如何在不删除代码更改的情况下删除特定的旧提交(即基本更改 git 故事)

我有一个存储库,它只是我的,所以破坏任何东西都没有问题。而且只有一个分支,我认为这让事情变得更容易。假设我有这 7 个提交:

A -> B -> C -> D -> E -> F -> G

我想删除提交 C 和 D

A -> B -> E -> F -> G

作为 A 有史以来第一次提交,而 G 是最后一次提交。

我怎样才能做到这一点?无需接触我的代码,只需了解 git 历史。

我知道我唯一能做的就是重置头部,但这不起作用,因为我不想删除 E、F 和 G。