日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

android git提交整个项目_使用子模块和子树来管理 Git 项目 | Linux 中国

發布時間:2024/10/8 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android git提交整个项目_使用子模块和子树来管理 Git 项目 | Linux 中国 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用子模塊和子樹來幫助你管理多個存儲庫中共有的子項目。https://linux.cn/article-12244-1.html作者:Manaswini Das譯者:Xiaobin.Liu

如果你參與了開源項目的開發,那么你很可能已經用了 Git 來管理你的源碼。你可能遇到過有很多依賴和/或子項目的項目。你是如何管理它們的?

對于一個開源組織,要實現社區和產品的單一來源文檔和依賴管理比較棘手。文檔和項目往往會碎片化和變得冗余,這致使它們很難維護。

必要性

假設你想把單個項目作為一個存儲庫內的子項目,傳統的方法是把該項目復制到父存儲庫中,但是,如果你想要在多個父項目中使用同一個子項目呢?如果把子項目復制到所有父項目中,當有更新時,你都要在每個父項目中做修改,這是不太可行的。這會導致父項目中的冗余和數據不一致,使更新和維護子項目變得很困難。

Git 子模塊和子樹

如果你可以用一條命令把一個項目放進另一個項目中,會怎樣呢?如果你隨時可以把一個項目作為子項目添加到任意數目的項目中,并可以同步更新修改呢?Git 提供了這類問題的解決方案:Git子模塊(submodule)和 Git?子樹(subtree)。創建這些工具的目的是以更加模塊化的水平來支持共用代碼的開發工作流,旨在 Git 存儲庫源碼管理(source-code management)(SCM)與它下面的子樹之間架起一座橋梁。

生長在桑樹上的櫻桃樹

下面是本文要詳細介紹的概念的一個真實應用場景。如果你已經很熟悉樹形結構,這個模型看起來是下面這樣:

Tree with subtrees

Git 子模塊是什么?

Git 在它默認的包中提供了子模塊,子模塊可以把 Git 存儲庫嵌入到其他存儲庫中。確切地說,Git 子模塊指向子樹中的某次提交。下面是我?Docs-test?GitHub 存儲庫中的 Git 子模塊的樣子:

Git submodules screenshot

文件夾@提交 Id 格式表明這個存儲庫是一個子模塊,你可以直接點擊文件夾進入該子樹。名為?.gitmodules?的配置文件包含所有子模塊存儲庫的詳細信息。我的存儲庫的?.gitmodules文件如下:

Screenshot of .gitmodules file

你可以用下面的命令在你的存儲庫中使用 Git 子模塊:

克隆一個存儲庫并加載子模塊

克隆一個含有子模塊的存儲庫:

$ git clone --recursive <URL to Git repo>

如果你之前已經克隆了存儲庫,現在想加載它的子模塊:

$ git submodule update --init

如果有嵌套的子模塊:

$ git submodule update --init --recursive

下載子模塊

串行地連續下載多個子模塊是很枯燥的工作,所以?clone?和?submodule update?會支持?--jobs?(或?-j)參數:

例如,想一次下載 8 個子模塊,使用:

$ git submodule update --init --recursive -j 8$ git clone --recursive --jobs 8 <URL to Git repo>

拉取子模塊

在運行或構建父項目之前,你需要確保依賴的子項目都是最新的。

拉取子模塊的所有修改:

$ git submodule update --remote

使用子模塊創建存儲庫:

向一個父存儲庫添加子樹:

$ git submodule add <URL to Git repo>

初始化一個已存在的 Git 子模塊:

$ git submodule init

你也可以通過為?submodule update?命令添加?--update?參數在子模塊中創建分支和追蹤提交:

$ git submodule update --remote

更新子模塊的提交

上面提到過,一個子模塊就是一個指向子樹中某次提交的鏈接。如果你想更新子模塊的提交,不要擔心。你不需要顯式地指定最新的提交。你只需要使用通用的?submodule update?命令:

$ git submodule update

就像你平時創建父存儲庫和把父存儲庫推送到 GitHub 那樣添加和提交就可以了。

從一個父存儲庫中刪除一個子模塊

僅僅手動刪除一個子項目文件夾不會從父項目中移除這個子項目。想要刪除名為?childmodule的子模塊,使用:

$ git rm -f childmodule

雖然 Git 子模塊看起來很容易上手,但是對于初學者來說,有一定的使用門檻。

Git 子樹是什么?

Git?子樹( subtree),是在 Git 1.7.11 引入的,讓你可以把任何存儲庫的副本作為子目錄嵌入另一個存儲庫中。它是 Git 項目可以注入和管理項目依賴的幾種方法之一。它在常規的提交中保存了外部依賴信息。Git 子樹提供了整潔的集成點,因此很容易復原它們。

如果你參考?GitHub 提供的子樹教程來使用子樹,那么無論你什么時候添加子樹,在本地都不會看到?.gittrees?配置文件。這讓我們很難分辨哪個是子樹,因為它們看起來很像普通的文件夾,但是它們卻是子樹的副本。默認的 Git 包中不提供帶?.gittrees?配置文件的 Git 子樹版本,因此如果你想要帶?.gittrees?配置文件的 git-subtree 命令,必須從 Git 源碼存儲庫的?/contrib/subtree 文件夾?下載 git-subtree。

你可以像克隆其他常規的存儲庫那樣克隆任何含有子樹的存儲庫,但由于在父存儲庫中有整個子樹的副本,因此克隆過程可能會持續很長時間。

你可以用下面的命令在你的存儲庫中使用 Git 子樹。

向父存儲庫中添加一個子樹

想要向父存儲庫中添加一個子樹,首先你需要執行?remote add,之后執行?subtree add?命令:

$ git remote add remote-name <URL to Git repo>$ git subtree add --prefix=folder/ remote-name <URL to Git repo> subtree-branchname

上面的命令會把整個子項目的提交歷史合并到父存儲庫。

向子樹推送修改以及從子樹拉取修改

$ git subtree push-all

或者

$ git subtree pull-all

你應該使用哪個?

任何工具都有優缺點。下面是一些可能會幫助你決定哪種最適合你的特性:

? Git 子模塊的存儲庫占用空間更小,因為它們只是指向子項目的某次提交的鏈接,而 Git 子樹保存了整個子項目及其提交歷史。? Git 子模塊需要在服務器中可訪問,但子樹是去中心化的。? Git 子模塊大量用于基于組件的開發,而 Git 子樹多用于基于系統的開發。

Git 子樹并不是 Git 子模塊的直接可替代項。有明確的說明來指導我們該使用哪種。如果有一個歸屬于你的外部存儲庫,使用場景是向它回推代碼,那么就使用 Git 子模塊,因為推送代碼更容易。如果你有第三方代碼,且不會向它推送代碼,那么使用 Git 子樹,因為拉取代碼更容易。

自己嘗試使用 Git 子樹和子模塊,然后在評論中留下你的使用感想。


via:?https://opensource.com/article/20/5/git-submodules-subtrees

作者:Manaswini Das?選題:lujun9972?譯者:lxbwolf?校對:wxy

本文由?LCTT?原創編譯,Linux中國?榮譽推出

總結

以上是生活随笔為你收集整理的android git提交整个项目_使用子模块和子树来管理 Git 项目 | Linux 中国的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 长篇h版少妇沉沦交换 | 91丨国产丨捆绑调教 | 国产精品88av | 免费看黄色片的网站 | 瑟瑟视频免费观看 | 成人h在线 | 久久精品无码一区二区三区 | 青草福利在线 | 女人18毛片毛片毛片毛片区二 | 都市激情亚洲一区 | 国产伦理久久精品久久久久 | 美女网站在线免费观看 | 国产三级精品在线 | 午夜精品美女久久久久av福利 | 在线看片亚洲 | 九九久久精品视频 | 一级全黄色片 | 色老头在线一区二区三区 | 久久久久亚洲精品 | 一级h片| 叼嘿视频91| 69国产 | 国产伦精品一区二区三区妓女下载 | 四虎在线免费观看 | 一区二区三区视频网 | 欧美黄页网站 | 夜夜夜影院 | 久久人人妻人人人人妻性色av | 日本电影一区二区三区 | 特级丰满少妇一级aaaa爱毛片 | 蜜桃91麻豆精品一二三区 | 免费av国产| 国产草草影院 | 91手机视频在线观看 | 一区二区在线播放视频 | 亚洲女人被黑人巨大进入 | 蜜臀精品一区二区三区 | 一二三区在线 | 91情侣在线 | 国产成人精品a视频一区 | 久热综合 | 日韩精品欧美在线 | 91亚洲一区二区三区 | 99精品毛片 | youjizz韩国| 亚洲人无码成www久久 | 五月天欧美 | 亚洲av无码乱码国产精品久久 | 国产成人久久精品 | 久久综合一区二区三区 | 国产有码 | 蜜桃成人网| 久久综合久久综合久久综合 | 操操日日 | a级片免费观看 | 久久久97| 亚洲色妞 | 久久在线免费 | 国产网址在线观看 | 色七七桃花影院 | 牛人盗摄一区二区三区视频 | 中文字幕一区二区三区乱码在线 | 一级美女视频 | 国产欧美日韩视频在线观看 | 豆花免费跳转入口官网 | 午夜精品视频在线 | 国产精品xxxx喷水欧美 | 一本到av | 黄色午夜网站 | 熟妇人妻中文av无码 | 亚洲色图18p | 日韩在线一二三 | 欧美精品免费在线观看 | 久久婷婷国产麻豆91 | 久久在线电影 | 91视频看片 | 国产美女av| 亚洲精品久久夜色撩人男男小说 | www.爱色av.com | 国产av电影一区 | 久久一级黄色片 | chinese中国性按摩hd | 天堂网在线观看视频 | www.操com| 被绑在床强摁做开腿呻吟 | 免费在线播放视频 | 精品久久91| 最新视频–x99av | 琪琪久久 | 国产精品久久久久久久 | 久久久久久久国产精品 | 欧美日韩国产精品一区二区三区 | 欧美视频一区二区在线 | 日本伦理一区 | 亚洲女人天堂色在线7777 | 粉嫩av四季av绯色av | 国产精品1000部啪视频 | 久久久久亚洲av无码麻豆 | jlzzjlzz欧美大全 |