【问题标题】:How can I "Censor" the history of a git repository?如何“审查” git 存储库的历史记录?
【发布时间】:2023-03-19 02:46:02
【问题描述】:

我目前有一个个人 git 存储库,用于存放我一直在开发的一些软件。该存储库曾经在一些配置文件中包含其他人的个人信息,我在 git 中拥有这些信息,因为它们对于跟踪和帮助记录配置文件的工作方式很有用。 git repo 还显示了配置文件是如何随时间变化的,即哪个版本需要什么。最近想把项目发布到 github 上,所以我创建了一个分支并从头部删除了个人信息,将每个项目替换为占位符。

除了回到每个修订版和“更改历史”之外,有没有办法让我“审查”所有出现的旧信息(一次全部更改),用新信息替换所有事件,所以如果有人要回滚它,他们会看到占位符而不是个人信息?

【问题讨论】:

  • 删除.git 文件夹(所有历史记录)并从您拥有的现在安全的文件开始? stackoverflow.com/q/9683279/139010
  • “git repo 还显示了配置文件如何随着时间的推移发生变化,即哪个版本需要什么。”这意味着我想保留一些历史,因为我发现它对未来的发展很有帮助,但其中大部分是无关紧要的并且会暴露身份信息。

标签: git version-control github revision-history


【解决方案1】:

您可以在其上运行 git filter-branch ,这将修改分支的历史记录并删除您想要的内容。然后您可以在其位置添加一个示例(占位符)文件。查看github's remove-sensitive-data help page

【讨论】:

  • 这会简单地过滤配置文件,还是逐行过滤修订?假设在第一个修订版中,配置文件说“John Doe”,但在第二个修订版中它说“姓名:John Doe”。我可以过滤它,使第一个配置文件显示“[Name]”,第二个显示“Name: [Name]”吗?我想保留编辑的历史记录,而不保留我认为不相关且不需要分享的信息。
  • @DavidJFelix filter-branch 可以使用 filter-branch 的 --tree-filter 对内容执行任何操作,但您必须编写自己的脚本或程序才能实际为每个修订做你想要的修改。
  • @wjl 好的。这似乎是合理的。有了这个,我会将其标记为已接受。我可以处理剩下的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多