问题标签 [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 投票
1 回答
765 浏览

git - 从 Git 中删除某个范围内未使用的大文件

我的 repo 是从一个开源项目中派生出来的,所以我不想在 ForkPoint 标记之前修改提交。我已经尝试过BFG Repo Cleaner,但它不允许我指定范围。

我想要

  1. 穿越历史ForkPoint..HEAD^
  2. 重写提交以删除所有大于 10M 的文件

如何从 git 存储库中删除未使用的对象?说应该是这样的

BADFILES不仅包含存在于HEAD?

例如,如果我错误地提交了一个HUGE_FILE然后又提交了另一个删除该文件的提交,则BADFILES搜索将找不到,HUGE_FILE因为find在当前工作树中看不到它。


Edit1:现在我正在考虑在克隆上使用 BFG,然后将我的叉子移到原始的 ForkPoint 上。fatRepo这会是正确的命令slimRepo吗?


Edit2:樱桃采摘不起作用,因为樱桃采摘无法处理 slimRepo 中的合并。我可以以某种方式粉碎 slimRepo 的历史,并简单地合并到 fatRepo/ForkPoint 上吗?

0 投票
3 回答
180 浏览

git - 如何删除主题 Git 分支的所有提交?

假设我有以下历史:

是否可以删除所有主题分支及其提交,如下所示

A-B-C-D-E master

0 投票
1 回答
473 浏览

git - 为什么 GitHub 在提交历史记录时不显示文件历史记录?

我最近发现了一个关于 GitHub 存储库的奇怪行为。

当我选择文件,然后选择它的历史(因为我想查看对该文件的所有更改/提交)时,只有最后一次提交:beans/AuthenticationBean.java.

但是,当我检查对整个存储库的所有提交(具有存在语言统计信息的文件夹结构的主页、提交次数等)时,我可以找到 5 个包含对此文件的更改的提交,如this commit

我不知道这是否与我在整个项目中所做的一次还原有关。
我在某处读过可能会导致历史重置之类的东西。
但是,如果您能帮助或向我解释这种情况,我会很高兴。

0 投票
3 回答
1124 浏览

git - Git 修改/改写(不添加/更改文件)

通常我想编辑提交消息,而不必从上次提交中重新选择文件集。

提交消息中的意外拼写错误。

这可行,但我不想从原始提交中重新选择文件集,我曾经不小心做了git commit -a --amend并无意中添加了许多更改。

我知道git rebase -i HEAD~1然后pickr(re-word)替换,但这最终只是几个步骤。

有没有办法在不包含任何新文件的情况下一步重新提交最后一次提交?

0 投票
2 回答
1151 浏览

git - 删除 Git 中的最后 2 个提交(未推送),保留更改

我正在尝试删除revert我的 Git 存储库开发分支上的最后 2 次提交,而不是。尚未推送提交。

我将如何在不丢失更改的情况下执行此操作?

0 投票
3 回答
1685 浏览

git - 运行 BFG Repo Cleaner 后如何更新/缩小我的 github 存储库的大小

我已经使用以下过程使用BFG Repo Cleaner清理了我的 repo :

我可以看到我的本地仓库缩小了 1GB。伟大的。我现在遇到的问题是我找不到任何信息,现在我也想缩小 GitHub-repo 的大小。如何做到这一点?

git push没有用,我也试过git push origin --force --all了,这给了我这个错误信息:error: --all and --mirror are incompatible

0 投票
1 回答
194 浏览

python - 将文件和提交历史从一个 git 分支移动到另一个而不更改 SHA

我有一个名为的分支add-ivp-solver,我已将其作为 GitHub 上项目的 PR 提交。分支有点臃肿,我们现在希望将一些文件移出add-ivp-solver一个名为的新分支add-models,该分支将在未来作为另一个 PR 提交。

我想知道是否可以将文件及其相关的提交历史从 移动add-ivp-solveradd-models以允许我们清理合并add-ivp-solvermaster关闭原始 PR 的方式。

我想这git filter-branch可能是我需要的。add-ivp-solver这应该允许我从to删除文件和提交历史记录add-models,但我担心它会add-ivp-solver处于“不一致状态”,​​这将使合并和关闭 PR 几乎不可能。

0 投票
4 回答
4910 浏览

git - 可能破坏/重写历史的 Git 命令

您能否提供(所有或最常见的)可能破坏 git 历史记录的操作或命令的列表?

应该绝对避免什么?

  1. 在推送此提交后修改提交 ( git commit/ git push/ git commit --amend)
  2. 向已经推动的东西重新定位

我希望这个问题(如果它之前没有在其他地方问过)成为对git上常见的可避免操作的某种参考。

此外,我使用git reset了很多,但我并不完全意识到我可能对存储库(或其他贡献者的副本)造成的损害。git reset会不会很危险?

0 投票
1 回答
184 浏览

git - 编辑 git 历史

在我的 git 存储库中,我只有包含 8 个提交的主分支。在提交 2 处,我插入了一个错误的类,现在我将在提交 2 中以这样的方式重写 git 历史,我没有错误的类,因此下一次提交没有它。这样做的正确方法是什么?

提前致谢。

0 投票
1 回答
7967 浏览

git - Git:如何重写远程历史?

一位同事不小心提交了一个大型二进制文件,该文件在源代码控制中没有任何业务,因此导致存储库异常大。然后他将这个提交推送到公共服务器,从那时起,还有很多其他的提交和推送。我正在寻找一种方法来撤消该提交,或者只是从遥控器上删除二进制文件,以便存储库恢复其通常的大小。

我们常用的遥控器在 assembla.com,所以我没有直接的 shell 访问权限,只有 git。

假设这是可能的,对其他下游节点会有什么后果?每个人都需要克隆一个新的存储库吗?(如果是这样就好了)