2016-03-16 199 views
1

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

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

下面来看看我的日志的顶部和底部: Top and bottom of log

如果任何人都可以建议我怎么能打扫一下我将不胜感激。

回答

1

通过agrias

评论后 “发布 - 201603141450” 的一个分支?

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

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

1

不是sourcetree用户,而是用rebase清理历史记录。

​​

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

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

+0

由于违规提交回到第一次提交,我不能使用rebase(除非有人可以建议我怎么做),并且我认为squash会压缩提交给它的父项 - 在所显示的两个分支之间不交叉。我如何删除选定的提交? – KELF

+0

是“Pub-201603141450”分支吗?如果是这样,'git log'看起来如何。如果它看起来没问题,你可以尝试改变主人的头以指向好分支的头。从源代码树上的外观看起来,黄色线是它自己的分支,这里的关键可能是检查该分支。 –

1

如果提交数量不是那么多,那么创建一个新的分支并使用获取提交你需要一个一个的提交也许是一个解决方案。因为你可以编写脚本来完成它。完成后,你可以删除你不想要的旧分支。

顺便说一句。

我以为壁球壁球会与其父

这是不正确提交,git rebase -i提供多种选择,不仅挤压与其父提交。

相关问题