Git:将特定文件和历史记录从一个存储库传输到另一个存储库

Git:将特定文件和历史记录从一个存储库传输到另一个存储库,git,Git,首先,我已经阅读了以下所有内容: - - - 我一直无法让这些解决方案中的任何一个正常工作,可能至少部分是因为我不熟悉高级git命令,例如git-rebase 背景 在过去的一年里,我和其他几个程序员一起在一个网站上为一个非营利组织做志愿者,这是用围棋写的。在这个过程中,我开发了一个分布式的、模块化的、多线程的、容错的web框架,该框架使用并发进程来实现,并结合了一个反向http代理,该代理可以分派到各个模块。web框架是由我编写的,尽管还有其他程序员编写的模块。我们所有的更改都被推送到一

首先,我已经阅读了以下所有内容: - - - 我一直无法让这些解决方案中的任何一个正常工作,可能至少部分是因为我不熟悉高级
git
命令,例如
git-rebase

背景 在过去的一年里,我和其他几个程序员一起在一个网站上为一个非营利组织做志愿者,这是用围棋写的。在这个过程中,我开发了一个分布式的、模块化的、多线程的、容错的web框架,该框架使用并发进程来实现,并结合了一个反向http代理,该代理可以分派到各个模块。web框架是由我编写的,尽管还有其他程序员编写的模块。我们所有的更改都被推送到一个中央git存储库,包括模块、框架、库(jQuery、tinymce等)

考虑到创建这个框架所涉及的大量工作,以及目前go程序员缺乏这样的解决方案,我正在考虑将该项目作为开源发布。但是,我只想发布实际的框架,而不是repo中的模块、库或其他东西。特别是,至少有一个模块使用硬编码的身份验证密钥来访问web API,这是您肯定不希望在公开发行版中使用的(尽管对于在站点上工作的其他程序员来说,这还不足以成为安全问题)。此外,反向http代理检查cookie的值,以便允许整个站点受到密码保护,cookie的值是硬编码的

如果可能的话,拥有git的提交历史记录将是一项资产,因为它将向正在调查框架的人显示它有历史记录,并向他们展示它的设计演变以及涉及的设计决策

问题: 使用
git
,在以开源形式发布正式内部产品时,如何仅包含特定文件以及这些特定文件的历史记录


奖励:有没有办法不在特定文件中包含特定行的历史记录(以及删除这些行)?

您似乎在寻找git bundle


最简单的方法是克隆整个回购协议,并了解
过滤分支的一些复杂之处

其实没那么难。根据它的布局,您可以编写一个小脚本,在构建新历史时删除某些文件。如果需要的话,子目录过滤器可以弹出零件

要删除某些行,请使用
annotate
查找引入要删除的行的版本,然后
rebase-i该修订版^
将其删除。这会导致一些重基失败,但它们很容易处理


这些类型的练习非常简单和安全,让你走上了一条你通常不会用git探索的道路。我想这会很有趣。:)

很抱歉,但是您能补充一点关于在这个场景中如何使用git捆绑包的内容吗?我会在命令行上列出我想要的历史记录的每个文件吗?e、 g.
git bundle创建foo-bar等等…
?这似乎不是该命令的标准用法,因此我很难从文档中识别它。
过滤器分支
是一个巧妙的技巧,谢谢!我看看我能不能让它工作。。。