我很难从早期的提交中删除包含一些敏感信息的单行。
让我们说我的git日志如下所示
b200bbe (HEAD -> master) A
67a8df7 B
47a6947 C
a55540f D
68b51d5 E
现在我在我的一个测试文件中看到我创建了一个调试行,在提交时打印出一些敏感信息
如果我只是删除该行并提交更改,那么如果在提交E和新提交之间浏览文件,人们就能看到该行。
有很多文章解释了如何从git树中删除一个完整的文件,但我找不到只删除一个行的方法。 filter-branch --tree-filter
似乎是最接近的,但我仍然需要提交更改,而git diff会暴露从命令中删除的行。
自提交E以来,没有提交过任何提交且没有分支。是否可以从完整的git树中删除文件中的单行?
答案 0 :(得分:2)
您可以尝试git rebase -i
。
按照你在问题中使用的例子,假设A在远程仓库中,但是B,C,D和E不是,在使用git rebase之后你会得到一个这样的屏幕:
pick 67a8df7 B
pick 47a6947 C
pick a55540f D
pick 68b51d5 E
然后你需要像这样编辑提交E行:
pick 67a8df7 B
pick 47a6947 C
pick a55540f D
edit 68b51d5 E
最后,删除所需的行,提交更改并使用git rebase --continue
继续。
git rebase documentation的更多信息。