当推到Bitbucket或Github时Git Subtree

时间:2017-03-27 13:33:39

标签: git

我有一个关于子树的问题。我有一个项目,我使用lib,我已使用子树机制添加。在此之前,我总是使用子模块,如果你知道自己在做什么,这些子模块效果很好。但我想尝试不同项目的子树。

因此,子树的工作也很好但我的问题是,当我将我的仓库推送到github或bitbucket时 - 并不重要,而其他人克隆了回购...子树的远程信息丢失了。

所以,如果我通过子树添加了很多lib,如果我丢失了我的主人,那么我必须手动添加所有子树的远程...或者这里的正确工作流程是什么?

我一直在想如何以这种方式管理linux,因为我知道linux是从很多子树中构建的。

非常感谢

1 个答案:

答案 0 :(得分:0)

这是Bitbucket的一个主要缺点(我认为是github)。您的链接未被推送到Bitbucket的原因是因为子树链接存储在存储库之外。

例如,在Sourcetree中,子树链接存储在.git/sourcetreeconfig

<RepositoryCustomSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <AutoRefresh>true</AutoRefresh>
  <AutoRefreshRemotes>true</AutoRefreshRemotes>
  <DraftCommitMsg />
  <IncomingSavedCount>0</IncomingSavedCount>
  <LastCheckedRemotes>2017-11-29T10:37:38.3041741-05:00</LastCheckedRemotes>
  <LastUsedView>FileStatus</LastUsedView>
  <LogBranchFilterIndex>0</LogBranchFilterIndex>
  <OutgoingSavedCount>0</OutgoingSavedCount>
  <SidebarExpandedItems>
    <string>File Status</string>
    <string>Branches</string>
    <string>Remotes</string>
  </SidebarExpandedItems>
  <SidebarWidth>210</SidebarWidth>
  <SubtreeLinks>
    <SubtreeLink>
      <SourcePathUrl>http://URL_TO_YOUR_BITBUCKET/scm/l20/00-0000-xx-eclipseutils.git</SourcePathUrl>
      <Prefix>00-0000-xx-eclipseutils</Prefix>
      <Refspec>master</Refspec>
    </SubtreeLink>
  </SubtreeLinks>
</RepositoryCustomSettings>

但是,此文件由Sourcetree工具维护,而不是实际存储在存储库本身中。

可能的解决方法是将文件.git/sourcetreeconfig存储在仓库中(例如_sourcetreeconfig),并在结帐时将文件复制到.git。

真的很遗憾,因为子树确实解决了Bitbucket的很多组织缺点。