1. 程式人生 > >git 子模組以及 在 Jenkins中如何使用

git 子模組以及 在 Jenkins中如何使用

git version 2.11.0 (Apple Git-81)

工作中會遇到這種情況,多個專案引用了同一套程式碼 A,這套程式碼A修改後還需要在多個專案中同步,如果專案是 git 管理,那就需要在每個專案中嵌入一個子模組,這個子模組就是 A


git 子模組允許你將一個 Git 倉庫作為另一個 Git 倉庫的子目錄。 它能讓你將另一個倉庫克隆到自己的專案中,同時還保持提交的獨立。

1:新增子模組
如果我們要嵌入一個子模組,就必須呼叫 submodule add 命令,並制定該模組的 倉庫路徑和模組所在的目錄名

> git submodule add [email protected]
:langzuxiaozi/ExtractSms.git sub

這樣一來,模組版本庫就會被完整地克隆到制定的目錄中(並且它也會建立屬於它自己的.git目錄),主版本庫中的.gitmodules檔案也將被同步建立或更新
然後還需要將新的子模組註冊到.git/config檔案中.
>git submodule init
目前子模組指向的是預設分支的 HEAD, 如果需要選擇子模組的版本, 那就需要用 checkout 命令來選擇一下相應的版本
>cd sub
>git checkout v1.0
>cd ..
然後將.gitmodules 檔案和子目錄新增到提交中
>git add .gitmodules
>git add sub
>git commit -m "Submodule added"
>git push

2:克隆帶有子模組的專案

要克隆一個帶有子模組的專案需要在執行 git clone 命令之後 需要初始化子模組和更新子模組,要不子模組的目錄內容是空的

>git submodule init
>git submodule update
現在子模組目錄就有內容了.當然也可以執行遞迴命令
>git clone --recursive [email protected]:langzuxiaozi/ExtractSms.git

3:子模組倉庫有更新,要用最新的子模組程式碼

在許多開發專案中,我們通常都希望主專案所整合的始終是子模組的當前最新版本.
git 的子模組不支援這種想法,子模組引用的只是模組版本庫中的某一次提交,模組版本庫中隨後的新提交併不會自動記錄到主版本庫中.所以需要我們顯示的修改
更新子模組

>cd sub
>git fetch
>git checkout v1.0
>cd ..
最後將新提交更新到模組目錄中.
>git add sub
>git commit -m "New version of the submodule"
>git push

4:修改子模組檔案內容後,提交更新

如果在工程中修改了子模組的檔案,那就進入到主版本庫中的子模組目錄提交併推送
>cd sub
>git add jni_common.h
>git commit -m "Changed submodule"
>git push
>cd ..
這個時候去子模組的倉庫看,就能看的這次的修改了,但是還沒完,主機板本的倉庫還沒更新呢,
先看一下當前主版本中子模組被引用的雜湊值
>git submodule status
+447ff22adb9ed9a72e4be7cdfa7ebe4f5ba2af0a sub (heads/master)
這個雜湊值是和子模組中倉庫中最新提交的雜湊值是一致的.下面更新主版本的倉庫
>git add sub
>git commit -m "New version of submodule"
>git push

5:修改子模組的 url

開啟目錄下的.gitmodules檔案,修改對應模組的 url,然後執行命令

>git submodule sync
>git commit -am "Update submodule url."
>git push

6:刪除子模組

首先逆初始化子模組目錄,執行後目錄內容為空

>git submodule deinit sub
然後刪除.gitmodules中的sub模組資訊 然後提交
>git rm --cached sub
>git git commit -am "Remove a submodule."
>git push

7:Jenkins配置 git 子模組
首先 git 的證書 是在 Jinkens 上配的才可以

Additional Behaviours -> Add -> Advanced sub-modules behaviours 選中
Recursively update submodules 和 Use credentials from default remote of parent repository
完成.



相關推薦

git 模組以及Jenkins如何使用

git version 2.11.0 (Apple Git-81) 工作中會遇到這種情況,多個專案引用了同一套程式碼 A,這套程式碼A修改後還需要在多個專案中同步,如果專案是 git 管理,那就需要在每個專案中嵌入一個子模組,這個子模組就是 A git 子模組允許你將一個

git-模組submodule

git 裸庫 沒有工作區的git倉庫,例如遠端伺服器存放專案程式碼的倉庫,並不需要工作區來修改 git submodule 一個git專案需要引入另外一個git專案的時候,可以使用submodule命令來完成。 git submodule add

小結下:Maltba的匿名函式,函式函式,函式以及feval函式

 1:匿名函式 引數 函式體 %匿名函式 [email protected](x)sin(x); y1=myfun1(0); y2=myfun1(0:0.01:2*pi); plot(y2) 變數空間結果為: 2:子函式  見註釋 functi

Git submodule - 模組【轉】

子模組 有種情況我們經常會遇到:某個工作中的專案需要包含並使用另一個專案。 也許是第三方庫,或者你獨立開發的,用於多個父專案的庫。 現在問題來了:你想要把它們當做兩個獨立的專案,同時又想在一個專案中使用另一個。 我們舉一個例子。 假設你正在開發一個網站然後建立了 Atom 訂閱。 你決定使

2018年9月26日Django的安裝以及建立第一個Django專案和模組

python字串物件的find()和index()方法的區別? index()和find()函式都是用於查詢字串,但是index()在沒有找到子串的時候會有報錯丟擲異常,影響程式執行。find()在找不到目標子串時不會丟擲異常,而是會返回-1,因此不會影響程式的執行。   函式

Git-Flow 的個人理解以及專案的實際應用

Tip:不需要了解git-flow思想和概念的同學可以直接忽略文字部分直接進入程式碼講解流程 首先git-flow是對git程式碼管理的一種特殊應用,主要是應用於多人協作開發的專案流程中.和git的使用沒有本質區別,git-flow可以理解為是使用指令碼對gi

spring-boot模組打包的jar去掉BOOT-INF資料夾

一、多子模組專案(多個依賴) 1.spring-boot maven打包,一般pom.xml檔案裡會加 <plugin>     <groupId>org.springframework.boot</groupId>     <

Jenkins使用Git和Maven之多個專案

                1.應用Aggregation管理多個子專案Maven中有一個Aggregation(聚合),可以將多個專案作為模組新增到一個pom.xml中,然後告訴Jenkins這個頂層pom.xml,就可以自動從Git中拿出這些專案的原始碼,並build所有的子專案和執行相應的測試程式。

[轉]使用Git Submodule管理模組

本文轉自:https://blog.csdn.net/qq_37788558/article/details/78668345 例項程式碼: 父專案:https://github.com/jjz/pod-project 子專案:https://github.com/jjz/pod-libra

git submodule模組管理

有種情況我們經常會遇到:某個工作中的專案需要包含並使用另一個專案。 也許是第三方庫,或者你獨立開發的,用於多個父專案的庫。 現在問題來了:你想要把它們當做兩個獨立的專案,同時又想在一個專案中使用另一個 1、新增子模組 git submodule add 【URL】【path】

CentOSredis以及pythonredis模組的安裝

CentOS下redis的安裝 1.下載redis的安裝包 2.tar -zxfz redis-3.2.0.tar.gz 進行解壓 3.進入其安裝目錄底下 4.make安裝 5.啟動服務端    

maven 構建專案時,modules模組,module對應name的欄位

當maven構建專案時,modules的module所使用的是子專案中pom中的name欄位名,而不是artifactId,也不是groupId例如:父專案Pom:<modules><

Git 和 Maven 的模組簡單實踐

當一個產品或者專案由大量獨立模組組成時,想要從 Git 挨個下載下來匯入 IDE 檢視並不容易,此時可以結合使用 Git 和 Maven 的子模組來處理這種場景。 通過 Git 子模組可以自動批量下載所有關聯的專案,通過 Maven 子模組可以批量匯入到 IDE 中,結合這兩者可以很

git常用命令,分支操作,模組

Git 是一個很強大的分散式版本管理工具,它不但適用於管理大型開源軟體的原始碼(如:linux kernel),管理私人的文件和原始碼也有很多優勢(如:wsi-lgame-pro) 二、 Git 常用命令1) 遠端倉庫相關命令 檢出倉庫:        $ git

Android業務元件化之模組SubModule的拆分以及它們之間的路由Router實現

前言:      前面分析了APP的現狀以及業務元件化的一些探討(Android業務元件化之現狀分析與探討),以及通訊的橋樑Scheme的使用(Android業務元件化之URL Scheme使用),今天重點來聊下子模組SubModule的拆分以及它們之間的路由Router實現。本篇涉及的相關知識比較多,閱讀

git管理程式碼報錯(使用Sourcetree工具) 有模組Submodule(未解決)

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree clone --branch masterhttp://x.x.x.x/project/project-iOS.git /User

Jenkins使用Git時遇到的兩個坑

1、jenkins-slave 機器上git報錯. Host key verification failed. git pull 18:37:24 Host key verification failed. 18:37:24 fatal: Could not read fr

父容器div內的元素div為float時,父元素無法撐開(或高度自適應)的解決方式以及cssposition和float的介紹

先簡單給出父元素無法高度自適應時的解決方案:       第一種:在父容器上設定 overflow:auto或者hidden可以讓它自動包含子元素,從而具有了實際的height值。       第二種:在子元素的最下面加上一個 空元素,並且設定clear:both,但

Maven如何禁止外掛(plugin)在模組(module)上執行

在多模組工程下,在父工程下執行的外掛預設會在其所有的子模組上也執行一遍,大多數情況下這是合理的,比如像compiler這樣的外掛,但是有時候也種行為可能並不是開發人員所期望的,比如使用exec外掛呼叫一個外部指令碼或命令,一般來說開發人員只希望在父工程下maven exec:

eclipse和idea工具 maven專案新建模組

右鍵父模組專案,找到maven資料夾,選擇Maven Module,點選next輸入模組名,點選next不用選擇,直接next點選finish完成。可以看到你新建的子模組#####################################################