没有历史的git分支

没有历史的git分支,git,branch,Git,Branch,我的git repo包含敏感密码,由于我无法控制的原因,现在无法删除这些密码。现在一切都没问题,因为回购协议只是内部的,但我被要求创建一个可以安全地与合作伙伴共享的分支机构 有没有办法在git中创建一个分支,然后以无法使用日志检索的方式从中删除文件 看起来不太可能,但我想问一下。我能想到的唯一解决方案是在没有敏感文件的情况下将文件树复制到新的git repo,但这样我就无法将合作伙伴的更改合并回我的repo。可以做的一件事是创建repo的分支,编辑密码,然后创建一个浅层克隆(深度为1)您将提供给

我的git repo包含敏感密码,由于我无法控制的原因,现在无法删除这些密码。现在一切都没问题,因为回购协议只是内部的,但我被要求创建一个可以安全地与合作伙伴共享的分支机构

有没有办法在git中创建一个分支,然后以无法使用日志检索的方式从中删除文件


看起来不太可能,但我想问一下。我能想到的唯一解决方案是在没有敏感文件的情况下将文件树复制到新的git repo,但这样我就无法将合作伙伴的更改合并回我的repo。

可以做的一件事是创建repo的分支,编辑密码,然后创建一个浅层克隆(深度为1)您将提供给合作伙伴的存储库。他们可以针对克隆人制作补丁之类的东西,但看不到整个历史,也不能把回购协议推到其他任何地方。如果他们只是在做改变,那么这应该是一个可行的解决方案。您仍然可以接受来自它们的修补程序并应用到主存储库

有关更多信息,请参阅的
--depth
选项。

使用:

假设您要删除一个文件 (包含机密信息的) 或侵犯版权)从所有 承诺:

git筛选器分支--树筛选器“rm filename”头


我要试着回答几个问题。假设您可以创建一个不包含敏感数据的分支。然后,你将云朵做一个不包含历史的分支的浅克隆,因此你不能从中提取,但它可以从你身上提取

另一件事是克隆一个新的存储库,并使用git删除工具删除敏感数据。这将创建一个独特的存储库,除了通过与第一个存储库的修补程序之外,它无法进行交互,但将具有所有历史记录。

git clone--您的远程存储库的深度1 url

浅层存储库的局限性

  • 您无法克隆或从浅层存储库获取(这意味着您无法使用此浅层副本创建新存储库)

  • 您无法使用git log命令查看整个历史记录

  • 这是一个可行的解决方案,你的伴侣可以做一些改变,并将其作为“补丁”发送给你的伴侣,如果你想让你的伴侣改变的话。然后在当前工作树/任何您想要应用的分支中应用该补丁。


我认为这种解决方案更适合本的情况。基于存储库管理访问比基于分支更容易。
git clone--depth 1git@github.com:project/projectname.git
-复制并粘贴1。)
--索引筛选器
删除文件的速度应快于
--树筛选器
。2.)如果您不想更改存储库,请首先创建新的分支,然后重写它。是的,在我链接到的文档中对各种技术进行了很好的讨论