1

所以....我说试图从历史记录中删除一个文件,因为它包含一个密码(我知道 - 从一开始就应该在 gitignore 中!)。我按照https://help.github.com/articles/remove-sensitive-data/到第 6 点,但我的 SSH 密钥被 Git Bash 使用(通常使用 sourcetree 作为存储在 BitBucket 上的存储库)有问题待修复,现在我拥有历史中所有提交的副本(最近的两个除外)。

在查看父母时,重复提交是独立的。实际上,看起来好像有两个 master 分支从未合并。

这是我的日志的顶部和底部: 顶部和底部的日志

如果有人可以建议我如何清理它,我将不胜感激。

4

3 回答 3

1

不是 sourcetree 用户,但您使用 rebase 清理历史记录。

git rebase -i HEAD~x

其中 x 是您想要返回的提交数。

如果您只想直观地清理您的历史记录并保留提交,您可以使用该squash选项。如果您想完全删除提交,您可以通过删除编辑器中的行来删除提交。

于 2016-03-16T14:31:43.880 回答
1

如果提交的数量不是那么多,那么创建一个新分支并使用git cherry-pickget commit 你需要一个一个可能是一个解决方案。当然,您可以编写脚本来执行此操作。完成后,您可以删除不需要的旧分支。

顺便一提。

我认为 squash 会压制与其父母的提交

这是不正确的,git rebase -i提供几个选项,而不只是用它的父级压缩一个提交。

于 2016-03-16T15:27:35.330 回答
1

agrias发表评论后询问

“Pub-201603141450”是一个分支吗?

(这是一个标签)我意识到我所有的标签都在旧的提交上。删除这些标签或将它们移动到新版本的提交会从我的历史记录中删除旧的提交。对标签不太熟悉,我猜这些标签有自己的历史。

我想如果我没有 SSH 密钥问题并继续执行https://help.github.com/articles/remove-sensitive-data/中的第 7 步,它会移动我的标签并避免此问题。

于 2016-03-16T15:59:15.177 回答