Git历史记录重复,是否可以挤压提交? 帮助:Git历史记录已复制(O_O)

Git历史记录重复,是否可以挤压提交? 帮助:Git历史记录已复制(O_O),git,git-rebase,git-history-rewrite,Git,Git Rebase,Git History Rewrite,我试图了解一个包含API密钥的文件,因此研究了从git历史记录中删除文件,并使用了此处提供的命令: 我使用了命令 git过滤器分支--索引过滤器'git rm--cached--ignore unmatch.env.development'HEAD git过滤器分支--索引过滤器'git rm--cached--ignore unmatch.env.production'头 这很好,但我想我把改变的历史拉到第二个本地回购来测试这些变化时弄糟了。我必须在第二次回购中重新设定基准,以确保旧的历史已经

我试图了解一个包含API密钥的文件,因此研究了从git历史记录中删除文件,并使用了此处提供的命令:

我使用了命令

git过滤器分支--索引过滤器'git rm--cached--ignore unmatch.env.development'HEAD
git过滤器分支--索引过滤器'git rm--cached--ignore unmatch.env.production'头

这很好,但我想我把改变的历史拉到第二个本地回购来测试这些变化时弄糟了。我必须在第二次回购中重新设定基准,以确保旧的历史已经消失。但是我想我已经重新发布了(快进合并或者其他任何东西),所以现在我有了大量的重复提交!(欧欧) 它们是相同的代码更改和时间戳,但提交Id不同

问题: 有没有办法修复历史的重复? 重写历史记录,挤压每个具有相同时间戳的提交,怎么样

或者,我会手动删除(几乎)每第二次提交的重基

第二项问题 我在development分支上做了这些更改,删除该文件确实有效。然而,将develop合并到master中并没有达到目的(当然)。所以我想我也写了大师的历史

但是现在我担心我会再次在主分支历史记录中复制提交

我试图获得一个包含API密钥的文件,因此研究了从git历史记录中删除一个文件,并使用了这里提供的命令

您应该做的是撤销API密钥并发出一个新密钥。如果回购协议存在于多台计算机中,由不同的人使用,备份,等等,那么这一切都是一种风险

有办法解决吗

我不确定你到底想修什么。任何更改提交中任何内容的操作都将更改哈希。因此,如果您成功地删除了您想要删除的内容,现在您有了一个包含旧提交的分支和一个包含新提交的分支,那么您需要做的是删除指向旧提交链的分支,并对存储库进行垃圾收集,以确保旧的提交真正消失

所以我想我也写了大师的历史


分支只是指向提交的指针。如果仍有多个分支包含该文件,则需要移动这些分支以指向已修复的提交链。因此,你必须做什么取决于。如果您的
master
分支机构也有错误,那么您还必须重写
master

的历史记录,谢谢您的回答。API已被吊销。我正在尝试修复git历史记录的副本,我想知道是否可以通过挤压提交来修复它?或者通过再基地?不客气!我建议你再问一个问题;在同一个地方问几个问题会让人困惑,而且会使已经回答的问题变得过时(我认为这违反了指导原则)。好吧,它们都与同一个问题有关,你认为问两次会让人困惑吗?我可以删除第二个问题。。。第一个是更紧迫的问题。@DomDom如果我正确理解StackOverflow,问题是如果问题发生变化,那么答案就会失效,人们必须更新答案。