2009-08-27 114 views
25

我的git仓库包含敏感的密码,这些密码由于我无法控制的原因而无法立即删除。现在一切都好,因为这个回购只是内部的,但我被要求创建一个可以安全地与合作伙伴分享的分支。没有历史的git分支

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

看起来像一个远射,但我想我会问。我能想到的唯一解决方案是将文件树复制到新的git仓库中,但没有敏感文件 - 但是我失去了将合作伙伴更改合并回我的仓库的能力。

回答

29

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

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

+0

我觉得这个解决方案将工作为Ben的情况更好。以分公司为基础管理访问比在分支基础上更容易。 – Apreche 2009-08-27 20:38:13

+4

'git clone --depth 1 [email protected]:project/projectname.git' - 复制并粘贴 – YumYumYum 2014-03-19 07:09:56

5

使用filter-branch

假设你要删除一个文件 (包含机密信息的 或侵犯版权)所有 提交:

git的过滤分支--tree过滤器“RM文件名'头

+0

1.)'--index-filter'应该比'--tree-filter'快于删除文件。 2.)如果您不想更改存储库,请先创建新分支并重新编写它。 – 2009-08-27 21:30:52

+0

是的,关于我链接到的文档中的各种技术有很好的讨论 – 2009-08-27 21:39:11

0

我会采取刺一些答案。让我们假设您可以创建一个不包含敏感数据的分支。你云然后做一个分支的浅层克隆,它不包含历史,因此你不能从中拉出来,但它可能会拉你的形式。

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

5

混帐克隆--depth 1 url_of_your_remote_repository

浅库

  • ,您无法克隆或从浅存储库中取出(这意味着使用这个你不能让一个新的存储库的局限性浅拷贝)

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

  • 其可行的解决方案,您的合作伙伴可以进行一些更改并将其作为“补丁”并将其发送给您的合作伙伴,如果您想要更改合作伙伴。然后在您当前的工作树/您想要应用的任何分支中应用该修补程序。

    More

相关问题