2

我无意中将 api 密钥信息添加到公共 bitbucket 存储库中,并认为我会学习如何将其删除。6 次提交之后,我现在开始着手处理它,即使在阅读了诸如http://goo.gl/Lf463C之类的内容之后,我也不太明白如何去做。

我不想失去我的 HEAD 承诺,尤其是。如果我是通过试炼来学习,所以我想我会问专家。实际上,我擦除公共回购并重新提交我最新的本地回购作为初始回购也没有问题,但我讨厌失去我积累的学习曲线历史。

总而言之,假设我有 20 次提交,我需要从第 10 次提交中删除一个文件,而不会弄乱其他提交,我该怎么做?谢谢!

4

3 回答 3

1

鉴于 repo 是公开的,您不能再将该 API 密钥视为私有 - 您需要使该 api 密钥无效并开始使用检入存储库的配置文件提供的新密钥(使用 .gitignore如果您决定希望属性文件存在于项目的文件层次结构中)。

在这样一个小项目上使用 rebase 来移除坏东西是合理的(自从坏东西发生以来只有十次提交),否则你需要一个更强大的工具来为你重写 Git 历史:

...不是 git 过滤器分支

说真的,不要使用 git filter-branch,对于这样的任务来说,这是一种痛苦的体验。有一个更好的、鲜为人知的工具,叫做BFG。在大型仓库中,它的速度要快数百倍,而且更容易使用。

于 2013-08-04T22:15:55.543 回答
1

假设没有人在他们的本地机器上下载了不需要的文件,您可以删除该文件。

在相关分支上使用以下命令:git rebase -i <branch_base>

当您获得与提交列表相邻的单词列表时,您可以将单词更改为pickedit问题的提交。(pick意味着使用提交,edit意味着您想在继续之前对该提交进行一些更改。)

从那里你可以git reset HEAD^在它阻止你提交时使用。然后重新添加您希望在历史记录中存在的文件,并且不要添加您不希望在历史记录中存在的文件。跟进git commit --amend(添加提交消息),然后git rebase --continue

在您的变基结束时,您的历史记录不应包含该文件。

于 2013-08-02T23:07:40.610 回答
-1

假设历史已发布-

您可以使用

git revert 提交名称

于 2013-08-03T02:00:09.143 回答