我无意中将api密钥信息添加到公共bitbucket repo中,并且认为我将学习如何将其删除。 6提交之后,我现在正在解决这个问题,并且在阅读像http://goo.gl/Lf463C这样的内容之后甚至不太明白。
我不想丢失我的HEAD提交,尤其是如果我通过火试验,所以我想我会问专家。我实际上没有问题擦拭公共回购,并重新承诺我最新的本地回购作为最初的,但不想失去我积累的学习曲线历史。
总而言之,假设我有20次提交,我需要从第10次提交中删除文件,而不会弄乱其他提交,我该怎么做?谢谢!
答案 0 :(得分:1)
假设没有人在本地计算机上下载了不需要的文件,您可以删除该文件。
当您在相关分支上时使用以下内容:git rebase -i <branch_base>
当您收到提交列表旁边的单词列表时,您可以在有问题的提交上将单词pick
更改为edit
。 (pick
表示使用提交,edit
表示您希望在继续之前对该提交进行一些更改。)
从那里你可以使用git reset HEAD^
来阻止你提交。然后添加回您希望存在于历史记录中的文件,并且不要在历史记录中添加您不想要的文件。跟进git commit --amend
(添加提交消息),然后git rebase --continue
在您的rebase结束时,您的历史记录不应包含该文件。
答案 1 :(得分:1)
鉴于repo是公共的,你不能再将API密钥视为私有 - 你需要使api密钥失效并开始使用由而不是的配置文件提供的新密钥em>签入您的存储库(如果您希望属性文件存在于项目的文件层次结构中,请使用.gitignore)。
使用rebase删除这么小的项目中的坏东西是合理的(自从发生了坏事以来只有10次提交),否则你需要一个更强大的工具来为你重写Git历史:
说真的,不要使用git filter-branch,这对于像这样的任务来说是一次痛苦的经历。有一个更好的,不太知名的工具叫The BFG。在一个大型回购上,它的速度要快几百倍,而且更容易使用。
答案 2 :(得分:-1)
假设发表历史 -
您可以使用
git revert commit-name