首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在保留最新更改的同时,从git中删除以前的提交吗?

在保留最新更改的同时,从git中删除以前的提交吗?
EN

Stack Overflow用户
提问于 2013-08-02 23:03:54
回答 2查看 4K关注 0票数 2

我无意中将api密钥信息添加到了一个公开的bitbucket回购中,并认为我将学习如何在这条道路上删除它。6提交稍后,我现在开始讨论它,甚至在阅读了- http://goo.gl/Lf463C之类的东西之后,我也不太明白如何使用它。

我不想失去理智(尤指)。如果我是在火上浇油地学习,所以我想我应该问问专家。事实上,我没有任何问题,消除公众回购,并重新建议我的最新本地回购作为初始,但不喜欢失去我积累的学习曲线历史。

总之,假设我有20次提交,我需要从第10次提交中删除一个文件,而不破坏另一次提交,我该如何做呢?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-08-02 23:07:40

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

在所讨论的分支上使用以下内容:git rebase -i <branch_base>

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

从这里开始,当git reset HEAD^在提交时停止时,您可以使用它。然后,在历史记录中添加您希望存在的文件,而不添加您不希望在历史记录中存在的文件。后续使用git commit --amend (添加提交消息),然后使用git rebase --continue

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

票数 1
EN

Stack Overflow用户

发布于 2013-08-04 22:15:55

鉴于回购是公开的,您不能再将该API密钥视为私有的--您需要使该api密钥失效,并开始使用配置文件提供的一个新的配置文件,该配置文件没有签入您的存储库(如果您决定要将属性文件驻留在项目的文件层次结构中,请使用.gitignore )。

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

...not git滤波器-分支

说真的,不要使用git过滤器分支,对于这样的任务来说,这是一次痛苦的经历。有一个更好的,不太出名的工具叫做BFG。在大型回购上,它的速度要快几百倍,而且使用起来也容易得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18027410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档