2010-11-11 142 views
1

我有一个回购包含single file中的一些实用功能。我想以某种方式将该文件添加到another repo,保持链接到旧的(所以我可以推/拉保持最新),同时保留所有其他文件。目标是有人拉第二个仓库也应该得到实用功能,而不必摆弄多个仓库。这是可行的例如cherry-pick或一些特殊的remote/clone语法,或者我必须将实用功能移动到一个单独的回购?在另一个回购中克隆部分Git回购

编辑:看起来像Partial sharing of git repositories和GitHub的Working with subtree merge可能是相关的;检查他们。

编辑2:在阅读了关于子树合并之后,如果我可以找到“要读取/合并的树对象的ID”,就好像会做这项工作,如git help read-tree所述。这只是一个提交ID?

回答

2

树对象与提交不同。树对象实质上代表一个目录。提交将包含表示工作树的树;该树可能包含其他树(子目录)以及blob(文件内容)。

你可以找到你所需要的目录使用git ls-tree树SHA1:

$ git ls-tree HEAD Documentation/howto 
040000 tree 7f4e8e870f2e4e7682a344e9a305f065388553e2 Documentation/howto 

,你可能想看看git-subtree,它封装了很多这方面的东西在一个不错的友好的方式。