2017-03-27 155 views
2

我有一個關於子樹的問題。我有一個項目,我使用了一個使用子樹機制添加的lib。在此之前,如果您知道自己在做什麼,我總是會使用工作得很好的子模塊。但我想嘗試其他項目的子樹。Git Subtree推送到Bitbucket或Github時

所以子樹的工作也很好,但我的問題是,當我把我的回購推到github或bitbucket - 無所謂和其他人克隆回購...子樹的遠程信息丟失。

因此,如果我有很多通過子樹添加的庫,並且如果我失去了我的主人,那麼我必須手動添加子樹的所有遠程...或者這裏的正確工作流程是什麼?

我總是想知道linux是如何管理的,因爲我知道linux是從很多子樹構建而成的。

非常感謝

回答

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的很多組織缺陷。

-1

如果您想修改子樹,您只需要遠程信息。對於大多數用戶來說,它將作爲一個常規文件/目錄,他們不需要特別注意。

您實際上需要遠程跟蹤信息的唯一實際用例是當您需要將子樹更新爲其各自遠程回購的最新提交時。這樣做的每個人都必須手動添加遠程地址。