zoukankan      html  css  js  c++  java
  • 在SourceTree中使用Git submodule

    在開發的過程中我們的項目可能會引用其他的版本庫中的代碼, 例如公司已經累積了一套公用的函式庫, 被多個項目調用;  很顯然地, 不能把公用函式庫的文件直接放到我們開發中的項目中, 這樣不但項目的冗餘, 也增加維護的難度, 無疑是替自己找麻煩.

    這時候我們就可以使用Git中submodule功能, 來管理我們的子模版, 在這裡我們配合使用GUI SourceTree(以下就簡稱ST吧), 以下就進入正文囉......

     

    1. 準備工作

    首先我們先建立兩個Repository分別叫smMain以及smLibA, 並把它們push到Git Server(ex: github, bitbucket…etc.), 在這裡就不多說了.

    bitbucket

    smMain: https://bitbucket.org/youngce/smmain

    smLibA: https://bitbucket.org/youngce/smliba

     

    2. 加入Submodule

    在{path}/smMain中使用git submodule add命令添加submodule

     

    git submodule add https://youngce@bitbucket.org/youngce/smliba.git libs/smlibA

    libs/smlibA表示將子模塊clone到{path}/smMain/libs/smlibA路徑下, 成功訊息如下圖,

    2014-10-24_1202

    在smMain資料夾中可以發現多一個libs資料夾了, 在ST也出現了uncommitted changes以及submodules了


    2014-10-24_1224

    接下來Commit再Push就好了.

    其實我們可以從上圖的libs/smlibA的檔案內容看出來, 在smMain的repository就只是記錄subproject 的commit id 而已.

     

    3. Submodule更新

    當發現smLibA更新時, 如何在smMain也進行更新呢??

    首先我先更新一下smLibA,

    2014-10-24_1357

     

    點擊smMain的Tag, 然後點開Submodules, 在smLaibA上點擊兩下

    2014-10-24_1359

     

    這時會開啟一個名為smLibA的新Tag, 這個smLibA指的smMain下的smLibA, 接下來就按下Pull做更新了

     

    2014-10-24_1205

    回到smMain會發現新的uncommitted, libs/smLibA中的subproject commit已經被修改為最新的commit id了

    2014-10-24_1411

    最後別忘了commit+push就完成了.

     

    4. Submodule修改

    在開發的過程可能會解決一些子項目的Bug或增加函式, 那如何做這樣的修改並更新到子項目的repository呢??

    在這裡, 將由smMain中修改smLibA, 最後再push到真正的smLibA的repository.

     

    就直接由smMain資料夾中對libA.txt做修改吧!! 在修改完後你會發現ST中smMain並沒有出現uncommitted,

    那剛剛的修改是跑去哪裡了呢?? 開啟submodule的smLibA看看吧!! 其實你可以想像submodule是存在於

    git repository中的repository(submodule), git repository只記錄目前repository(submodule), 是對應到哪個

    commit id, 而repository(submodule)自己管理自己修改.

    2014-10-24_1424

     

    接著commit+push, 別以為這樣就結束了, 我們還要去確定smMain的subproject commit有沒有被修改, 要不然

    下次Pull下來的時候我們submodule就不是我們修改過的!!

    2014-10-24_1446

    最後就Commit+Push吧!!

  • 相关阅读:
    URAL 2046 A
    URAL 2056 Scholarship 水题
    Codeforces Gym 100286I iSharp 水题
    Codeforces Gym H. Hell on the Markets 贪心
    Codeforces Gym 100286G Giant Screen 水题
    Codeforces Gym 100286B Blind Walk DFS
    Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
    Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积
    Codeforces Gym 100418K Cards 暴力打表
    Codeforces Gym 100418J Lucky tickets 数位DP
  • 原文地址:https://www.cnblogs.com/YangMark/p/4048296.html
Copyright © 2011-2022 走看看