git submodule

git submodule

git submodule 的作用是將一個 git 倉庫,最為另一個 git 倉庫的子模塊

比如
A 倉庫地址:git@github.com:xxxxxxx/A.git
B 倉庫地址:git@github.com:xxxxxxx/B.git

一、克隆 A 倉庫

打開拉取的 A 項目根目錄
在 A 項目中添加 B 項目的 git 倉庫,作為子模塊,設置 B 項目在 A 項目中的路徑是 A/client/Assets/B
打開命令行,執行命令

git submodule add git@github.com:xxxxxx/B.git client/Assets/B

A 項目目錄下出現兩個文件

.gitmobule
client/Assets/B

打開 .gitmodule 顯示 三行信息

[submodule "client/Assets/B"]path = client/Assets/Burl = git@github.com:XXXXXX/B.git

這里一般默認使用 submodule 倉庫 (B)的 master 或者 main 分支
如果想使用哪一個分支,添加 branch,修改如下

[submodule "client/Assets/B"]path = client/Assets/Burl = git@github.com:LIQIANGEASTSUN/B.gitbranch = master_sdk # 確保這里是 master_sdk 分支

在可視化 git 工具,如:SourceTree 上選擇 client/Assets/B 可以看到 里邊是一條指向 B 項目某一次提交的 commit
B 倉庫作為 A 倉庫的 submodule,此時 B 倉庫并不是在哪個分支上,而是在 B 倉庫的某一條提交
A 倉庫只是在使用 B 倉庫某一次提交的狀態,具體細節可以自行查資料

二、初始化子模塊,執行命令
git submodule init
三、更新 submodule,執行命令
git submodule update

git submodule update 命令會將子模塊檢出到父倉庫中記錄的提交
只有在明確地更新并提交了子模塊的狀態后,父倉庫才會知道子模塊現在指向的是最新的提交

要確保當前使用的 submodule 是最新的提交,遞歸的將所有子模塊更新到遠程倉庫的最新提交
執行命令:

git submodule update --remote --recursive

如果只是想更新具體的 submodule 如 client/Assets/B,將 --recursive 替換為具體的 submodule 名
執行命令

git submodule update --remote client/Assets/B
四、提交子模塊的更新

更新子模塊后,需要將子模塊的狀態提交到父倉庫,執行以下命令:

git add client/Assets/B
git commit -m "Update submodule to latest commit"
git push
五、查看 submodule 狀態
git submodule status
輸出:daddf8e4fe8b122128c63d69fd73fd031269285a client/Assets/B(heads/master_sdk)
六、已經克隆的項目更新 submodule

一個項目已經克隆到本地了,別人添加了一個 submodule 并提交,我們本地倉庫需要更新,執行命令:

# 初始化和更新所有子模塊
git submodule update --init --recursive

然后執行 三、四

七、克隆一個添加了 submodule 的倉庫

執行命令

git clone --recurse-submodules git@github.com:XXXXX/A.git
git submodule update --init --recursive

執行 三 、四
如果克隆時沒有添加 --recurse-submodules 克隆完成后,執行 二、三 、六、七

八、刪除子模塊
  1. 刪除子模塊的條目
    首先,從 .gitmodules 文件中刪除子模塊的相關配置
    打開 .gitmodules 文件,找到并刪除與要移除的子模塊相關的條目,如下
[submodule "client/Assets/B"]path = client/Assets/Burl = git@github.com:xxxxxx/B.gitbranch = master_sdk # 確保這里是 master_sdk 分支
  1. 刪除子模塊的配置
    接下來,從 Git 配置中刪除子模塊的條目。您可以使用以下命令:
git config --remove-section submodule.client/Assets/B

也可以打開 .git/config 文件手動刪除,如下

[submodule "client/Assets/B"]active = trueurl = git@github.com:LIQIANGEASTSUN/B.git
  1. 刪除子模塊的目錄 .git\modules\client\Assets\B 目錄
rm -rf client/Assets/B
  1. 將這些更改提交到父倉庫
git add .gitmodules
git commit -m "Remove submodule client/Assets/B"
git push
  1. 清理 Git 緩存(可選)
    如果希望完全清理 Git 的緩存,可以運行以下命令:
git rm --cached client/Assets/B
  1. 移除子模塊
    首先,使用以下命令移除子模塊:
    取消子模塊的初始化
    git submodule deinit -f client/Assets/B

從工作目錄和索引中移除子模塊

git rm -f client/Assets/B

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72435.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Compose 實踐與探索九 —— DrawModifier 解析

本篇講解 DrawModifier 的基本用法與代碼原理,介紹原理的目的在于可以判斷繪制與繪制的關系,繪制與布局的關系。知道達成某種繪制效果應該怎么寫,面對復雜的 Modifier 鏈時對效果有大致預判。 DrawModifier 管理繪制,需要以負責管…

華為手機助手輸入連接碼時光標亂跳

問題復現:輸入12345678,光標自動跳轉導致連接碼出現亂序情況。 千萬別試著找出規律,已試動態規律非大牛誤輕試 問題原因: 想啥呢?華哥的軟件又不是我開發我要Know Why干啥 我只需關心解決方案 (可能時輸入…

《DeepSeek 開源 DeepGEMM:開啟AI計算新時代的密鑰》:此文為AI自動生成

《DeepSeek 開源 DeepGEMM:開啟AI計算新時代的密鑰》:此文為AI自動生成 引言:AI 計算的新曙光 在當今科技飛速發展的時代,人工智能(AI)無疑是最為耀眼的領域之一。從語音助手到自動駕駛,從圖像…

Windows 11 安裝Docker Desktop環境

1、確認CPU開啟虛擬化 打開任務管理器,切換到“性能”選項卡,查看 CPU 信息。若“虛擬化”狀態顯示為“已啟用”,則表示虛擬化已開啟;若顯示為“已禁用”,則需要在啟動時進入 BIOS 開啟虛擬化設置(若顯示已…

STM32如何精準控制步進電機?

在工業自動化、機器人控制等場合,步進電機以其高精度、開環控制的特性得到了廣泛應用。而在嵌入式系統中,使用STM32進行步進電機的精確控制,已成為開發者的首選方案之一。 本文將從嵌入式開發者的角度,深入探討如何基于STM32 MCU…

【 <一> 煉丹初探:JavaWeb 的起源與基礎】之 JavaWeb 項目的部署:從開發環境到生產環境

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、開發環境…

深度學習CNN特征提取與匹配

?一、CNN特征提取核心方法? ?基礎網絡架構? 使用卷積神經網絡&#xff08;如ResNet、VGG、MobileNet&#xff09;提取多層特征圖&#xff0c;通過卷積層自動學習圖像的局部紋理、形狀及語義信息?。 ?淺層特征?&#xff1a;邊緣、角點等低級特征&#xff08;Conv1-3&…

Vuex 高級技巧與最佳實踐

使用 map 輔助函數簡化代碼&#xff1a; javascript import { mapState, mapGetters } from vuexexport default {computed: {...mapState([num]),...mapGetters([doubleNum])} }模塊化開發&#xff1a; javascript // modules/student.js export default {namespaced: true,st…

算法題(98):大數加法

審題&#xff1a; 本題需要我們解決大數加法&#xff0c;大數直接運算會超出范圍&#xff0c;所以我們需要轉換成字符串一位位進行計算 思路&#xff1a; 方法一&#xff1a;高精度加法 我們將兩個大數的每一個位分別計算&#xff0c;然后頭插到answer字符串中即可 解題&#x…

C# Exe + Web 自動化 (BitComet 綠燈 自動化配置、設置)

BitComet GreenLight,內網黃燈轉綠燈 (HighID), 增加p2p連接率提速下載-CSDN博客 前兩天寫個這個&#xff0c;每次開機關機后要重來一遍很麻煩的索性寫個自動化。 先還是按照上面的教程自己制作一遍&#xff0c;留下Luck 以及 路由器相關的 端口記錄信息。 &#xff08;因為自…

基于 Docker 搭建 FRP 內網穿透開源項目

有些配置項不知道該不該用,不知道該在哪用,不知道怎么用,所以我自己寫個文章簡單記錄一下做個筆記 本文介紹的是基于 Docker 運行 frps 和 frpc,并通過 TCP 協議簡單穿透 SSH 和 HTTP,在觀看本文之前請確保你的機器已經安裝 Docker 服務端搭建 frps# 連接擁有公網 IP 的…

python---序列 (str,list,tuple)

一、 序列類型入門 python的數據類型&#xff1a;int float bool str 運算符 - * / % > < and or not 流程控制ifelsewhilefor掌握python的2大容器類型數值類型&#xff08;3個&#xff09;&#xff1a;int float bool序列類型容器(3個)&#xff1a;str &#xff1a; …

CSS元素層疊順序規則

CSS元素層疊順序規則 看圖說話總結: background/borderz-index(<0)blockfloatinline/inline-blockz-index(0,auto)z-index (>0)

刪除有序數組中的重復項(26)

26. 刪除有序數組中的重復項 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {auto first nums.begin();auto last nums.end();auto result first;if (first last) {return std::…

Vue 概念、歷史、發展和Vue簡介

一、Vue概念 官方定義&#xff1a; 漸進式JavaScript 框架&#xff0c;易學易用&#xff0c;性能出色&#xff0c;適用場景豐富的 Web 前端框架。 Vue.js 是一個流行的前端JavaScript框架&#xff0c;由尤雨溪&#xff08;Evan You&#xff09;開發并維護。 它最初于2014年發…

ArcGIS Pro將有文字標注底圖切換為無標注底圖(在線地圖圖源)

今天介紹一下在ArcGIS Pro將有標注的地形底圖換成無標注的底圖。 大家在這項目底圖時候會經常調用ArcGIS Pro自帶的地形圖&#xff0c;但是這個地形圖自帶是有注記的&#xff0c;如下圖。 如何更改&#xff0c;才可以調用無文字注記的呢&#xff1f; 對于一個已經切好圖的有注記…

Xxl-Job學習筆記

目錄 概述 核心架構 核心特點 應用場景 什么是任務調度 快速入門 獲取源碼 初始化調度數據庫 基本配置 數據源datasource 郵箱email&#xff08;可選&#xff09; 會話令牌access token 啟動調度中心 啟動執行器 依賴 yaml基本配置 XxlJobConfig類配置 定義執…

讓雙向鏈表不在云里霧里

又來博客留下我的足跡了&#xff0c;哈哈哈&#xff0c;這次是對于雙向鏈表的理解 目錄 創建雙向鏈表&#xff1a; 申請結點&#xff1a; 雙向鏈表初始化&#xff1a; 雙向鏈表插入結點&#xff1a; 雙向鏈表刪除結點&#xff1a; 雙向鏈表的打印&#xff1a; 雙向鏈表…

java虛擬機(JVM)以及各種參數詳解

Java 虛擬機&#xff08;JVM&#xff09;提供了許多參數來調整其行為和性能&#xff0c;以便更好地適應不同的應用場景。理解和使用這些參數對于優化 Java 應用程序的性能非常重要。以下是一些常用的 JVM 參數及其詳細說明&#xff1a; 1. 內存管理參數 -Xms<size>&…

如何搭配 AI 量化策略選股

AI 量化選股策略結合了 技術指標、基本面數據、市場情緒&#xff0c;利用 機器學習、深度學習、因子分析 等方法&#xff0c;提高選股精準度和交易決策效率。下面介紹 如何搭配 AI 量化策略選股。 1. AI 量化選股的核心方法 AI 量化選股主要依靠 數據驅動&#xff0c;包括&…