国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用Git Submodule可能遇到的坑

移動開發 Android
隨著近幾年的發展,Git已經成為開源界的標準的版本控制工具。開源界的重量級項目,如Linux, Android, Eclipse, Gnome, KDE, Qt, ROR, Debian,無一例外的都是使用git來進行版本控制。在使用的過程中,作者發現了一些問題,在此分享給大家。

 

[[72462]]

前言

  對于一些比較大的工程,為了便于復用,常常需要抽取子項目。例如我開發的猿題庫客戶端現在包括3門考試,客戶端涉及的公共UI、公共底層邏輯、公共的第三方庫、以及公共的答題卡掃描算法就被我分別抽取成了子項目。這些子項目都以git submodule的形式,增加到工程中。

在使用了git submodule一段時間后,我發現了一些submodule的問題,在此分享給大家。
更新submodule的坑

  submodule項目和它的父項目本質上是2個獨立的git倉庫。只是父項目存儲了它依賴的submodule項目的版本號信息而已。如果你的同事更新了submodule,然后更新了父項目中依賴的版本號。你需要在git pull之后,調用 git submodule update來更新submodule信息。

 

  這兒的坑在于,如果你git pull之后,忘記了調用 git submodule update,那么你極有可能再次把舊的submodule依賴信息提交上去。對于那些習慣使用 git commit -a的人來說,這種危險會更大一些。所以建議大家:
1.git pull之后,立即執行git status, 如果發現submodule有修改,立即執行git submodule update
2.盡量不要使用 git commit -a, git add命令存在的意義就是讓你對加入暫存區的文件做二次確認,而 git commit -a相當于跳過了這個確認過程。

 

  更復雜一些,如果你的submodule又依賴了submodule,那么很可能你需要在git pull 和 git submodule update之后,再分別到每個submodule中再執行一次git submodule update,這里可以使用 git submodule foreach命令來實現: git submodule foreach git submodule update

 

修改submodule的坑

  有些時候你需要對submodule做一些修改,很常見的做法就是切到submodule的目錄,然后做修改,然后commit和push。

 

  這里的坑在于,默認git submodule update并不會將submodule切到任何branch,所以,默認下submodule的HEAD是處于游離狀態的(‘detached HEAD’ state)。所以在修改前,記得一定要用git checkout master將當前的submodule分支切換到master,然后才能做修改和提交。

 

  如果你不慎忘記切換到master分支,又做了提交,可以用cherry-pick命令挽救。具體做法如下:
1.用 git checkout master 將HEAD從游離狀態切換到 master 分支, 這時候,git會報Warning說有一個提交沒有在branch上,記住這個提交的change-id(假如change-id為 aaaa)
2.用 git cherry-pick aaaa 來將剛剛的提交作用在master分支上
3.用 git push 將更新提交到遠程版本庫中

 

  以下是相關命令的操作示范和命令行輸出結果:
1. ui_common git:(df697f9) git checkout master
2.Warning: you are leaving 1 commit behind, not connected to
3.any of your branches:
4.
5.  df697f9 forget to check out master
6.
7.If you want to keep them by creating a new branch, this may be a good time
8.to do so with:
9.
10. git branch new_branch_name df697f911e5a0f09d883f8f360977e470c53d81e
11.
12.Switched to branch 'master'
13. ui_common git:(master) git cherry-pick df697f9

 

使用第三方工具

  對于submodule的重度使用者,有幾個工具可作推薦:
1.Repo Google用于管理Android項目的工具。
2.Gitslave
3.Git Subtree

  以上工具,我都沒有實際用過,所以無法提供更多信息。

 

Tips

  由于常常使用submodule的相關命令,可以在 ~/.gitconfig文件中將其設置別名,方便操作,我設置的所有相關別名如下:
1.[alias]
2.  st = status -s
3.  ci = commit
4.  l = log --oneline --decorate -12 --color
5.  ll = log --oneline --decorate --color
6.  lc = log --graph --color
7.  co = checkout
8.  br = branch
9.  rb = rebase
10.  dci = dcommit
11.  sbi = submodule init
12.  sbu = submodule update
13.  sbp = submodule foreach git pull
14.  sbc = submodule foreach git co master


參考鏈接
1.《why-your-company-shouldnt-use-git-submodules》 (需翻墻)

2.《Git_submodule_tutorial》
 

來源:唐巧的技術博客

責任編輯:佚名 來源: cocoachina
相關推薦

2018-07-16 14:23:30

代碼Android問題

2018-02-07 11:15:07

Vagrant使用問題

2023-04-04 08:38:27

命令Git倉庫

2024-10-06 13:41:25

2017-07-14 09:29:45

AndroidWebview

2016-03-23 11:03:40

2017-08-01 05:44:10

Dockerweave虛擬機

2024-09-09 08:02:27

2021-10-15 06:58:41

psycopg2綠色版 Python

2024-09-09 09:08:28

2017-06-23 11:20:00

DockerWeave內核

2021-03-18 14:47:42

Jenkins git submodu代碼

2019-01-07 14:36:36

Go系統開源庫

2021-08-29 18:36:17

MySQL技術面試題

2017-09-27 15:20:23

PHPerLaravelMysql

2023-02-28 16:26:46

推薦系統模塊

2020-05-12 14:57:06

git commit代碼前端

2015-02-10 11:25:59

AndroidiOS微軟

2020-12-30 09:55:56

鴻蒙HarmonyOS環境搭建

2021-03-18 09:18:12

python爬蟲
點贊
收藏

51CTO技術棧公眾號

日韩美女毛片| 日本不卡一区二区三区高清视频| 亚洲成人国产精品| 99reav2| 国产亚洲人成网站| 被灌满精子的波多野结衣| 欧美综合二区| 精品国产日本| 99国产精品视频免费观看一公开| 国产欧美日韩综合精品| 色婷婷精品视频| 国a精品视频大全| 日韩欧美久久| 欧美日韩国产成人| 精品一区二区三区中文字幕视频 | 日本成人三级| 亚洲人体偷拍| 激情五月综合色婷婷一区二区| 91超碰国产精品| 亚洲影院高清在线| 精品一区二区三区在线| 国产精品av电影| 日本一本不卡| 99一区二区| 91久久在线| 欧美日韩亚洲在线| 人人狠狠综合久久亚洲| 亚洲一区三区| 成人黄色在线网站| www亚洲成人| 亚洲伦在线观看| 在线一区观看| 色成年激情久久综合| 在线观看免费版| 日韩美一区二区三区| 亚洲三级欧美| 久久国内精品一国内精品| 久久久久毛片免费观看| 青青草原成人在线视频| 中文字幕亚洲精品乱码| 久久综合九色99| 国产精品综合一区二区三区| 大肉大捧一进一出好爽视频| 中文字幕在线不卡国产视频| 在线看片地址| 在线视频欧美精品| 99久久久精品视频| 99国内精品久久久久| 日产欧产美韩系列久久99| 中文字幕制服丝袜成人av| 国产在线日韩在线| 亚洲一区av| 国产99久久久国产精品潘金 | 中文字幕av日韩| 青草影视电视剧免费播放在线观看| 亚洲第一免费网站| 国产一区2区在线观看| 国产精品高潮呻吟久久av黑人| 欧美激情四色| 国产在线拍揄自揄拍无码| 中文字幕精品—区二区四季| 三级国产在线观看| 亚洲女人被黑人巨大进入al| 日韩成人av在线资源| 精品一区二区三区视频日产| 91亚洲精品久久久蜜桃| 香蕉网站在线| 亚洲免费av网址| 亚洲国产精品嫩草影院久久av| 欧美日韩精品久久| 欧美韩国一区二区| 色爱综合区网| 97精品久久久| 久久精品国产精品亚洲精品| 免费观看的av网站| 亚洲欧美日韩视频一区| 三级电影一区| 亚洲精品蜜桃久久久久久| 欧美日韩国产丝袜另类| 欧美日韩在线精品一区二区三区激情综合 | 91精品国产综合久久福利软件 | 欧美va在线播放| 亚洲另类春色校园小说| 亚洲国产精品视频一区| 亚洲精品视频在线观看免费| 蜜桃av在线播放| 成人h猎奇视频网站| 久久一区二区视频| 欧美videosex性欧美黑吊| 国产精品福利片| 91美女精品福利| 超碰97国产精品人人cao| 成人性生交xxxxx网站| 91影院在线观看| 久久影院午夜精品| 就去色蜜桃综合| 色呦呦国产精品| 怕怕欧美视频免费大全| 欧美在线观看成人| 精品五月天久久| 久久不射网站| 久久久久久女乱国产| 国产成人欧美在线观看| 久久久影院官网| 国产韩日精品| 一区二区日本伦理| 在线不卡一区二区| 国内在线观看一区二区三区| 嫩草嫩草嫩草嫩草| 97精品在线观看| 欧美精彩视频一区二区三区| 国产人妖一区| 国产精品一线二线三线| 亚洲欧美国产精品| 久久精品国产一区二区三| 老司机午夜在线视频| 草莓视频一区| 在线观看亚洲一区| 亚洲一级网站| 午夜激情视频在线观看| 肥熟一91porny丨九色丨| 五月天国产精品| 99tv成人| 国际av在线| 国产福利一区二区三区在线观看| 天天综合色天天综合色h| 四季av一区二区三区免费观看| 啊灬啊灬啊灬啊灬高潮在线看| 欧洲中文字幕国产精品| 综合欧美一区二区三区| 午夜欧洲一区| 一级毛片高清视频| 成人欧美在线观看| 欧美伊人久久久久久午夜久久久久| 国产精品久久久久久久免费观看| 中文字幕在线资源| 国产91精品入口17c| 337p亚洲精品色噜噜噜| 久久人人97超碰国产公开结果| 老司机在线视频二区| 欧美日韩在线精品| 国产视频精品久久久| 国产成人av福利| 国产999精品在线观看| 中文字幕 91| 国产精品旅馆在线| 欧美日韩一区二区三区四区五区| 日韩国产欧美在线视频| 小h片在线观看| 日本三区在线观看| 国产日韩精品综合网站| 欧美一区二区三区爱爱| 国产成人综合亚洲91猫咪| 国产一区二区三区视频在线| 国产一级性片| av蓝导航精品导航| 精品福利视频一区二区三区| 成人综合激情网| 欧美亚视频在线中文字幕免费| 一起操在线观看| 伊人av成人| 久久久在线免费观看| 欧美视频精品一区| 精品一区二区免费看| 亚洲性视频在线| 国产一二三区在线| 久久国产精品网| 国产精品中文字幕久久久| 日韩一区二区高清| 国产精品乱人伦中文| 亚洲全部视频| 亚洲一区二区av| 日本aaa在线观看| 久久av综合网| 国产在线日韩在线| 日韩国产欧美精品一区二区三区| 日本一区二区三区国色天香| 一区二区三区在线| 精品欧美一区二区三区在线观看| 美女的尿口免费视频| 亚洲视频精品一区| 国产成人av网址| 亚洲国产精品人久久电影| 久久亚洲捆绑美女| 亚洲美女一区| 91蝌蚪精品视频| 国产福利视频在线| 亚洲四虎av| 国产精品无码乱伦| 国产精品狼人色视频一区| 亚洲电影免费观看| 一区二区国产盗摄色噜噜| 九九九久久久精品| 久久亚洲成人| 成人在线精品| 色三级在线观看| avtt天堂资源网站| 大陆av在线播放| 日韩av高清| 91久久精品国产|