導航:首頁 > 程序命令 > gitsubmodule命令

gitsubmodule命令

發布時間:2022-12-08 19:08:33

① Git Submole 使用

git 的 submole 作為一個獨立的 repo , 其擁有普通 repo 全部的功能, 我們可以完全按照普通的 repo 管理命令來進入 submole 中進行手動管理. 不過如果存在多個 submole 位於同一 superproject 下時, 掌握一些 git submole ... 命令就變得尤為重要了.

本文列出了常用的一些 git submole 管理命令, 並舉出實際應用中遇到的問題及解決方案.

在 git 倉庫 superproject 的目錄中使用 git submole add https://github/HanleyLee/C 即可將 https://github/HanleyLee/C 作為一個 submole 被 superproject 依賴與管理.

當 submole 被修改時我們可以在 superproject 中得到通知:

在 repo Test 作為 submole 被 superproject 管理後:

添加 git submole 的方法很簡單, 使用 git submole add <repo url> 即可. 添加完之後, 在 superproject 的目錄下會產生一個 .gitmole 文件, 文件的結構如下:

可以看到, .gitmole 文件中標記了每一個 submole 的 path 與 url .

然後我們進入 ./C :

我們發現 ./C/.git 竟然是一個文件 (常規 git 目錄中的 .git 是文件夾), 然後其內容指向了另一個文件夾 (類似於指針), 我們再去到那個文件夾:

我們發現這個文件夾才是 submole 的真實 .git 文件夾, 我們對於 submole 的所做的 commit 信息也都保存在這里.

默認情況下, git pull 命令會遞歸地抓取子模塊的更改 (fetch), 然而, 它不會將 submole merge 到所跟蹤的分支上. 因此我們還需要執行 git submole update .

如果我們想一句話解決, 那麼可以使用 git pull --recurse-submole , 這個可以在拉取完 submole 後再將其 merge 到所跟蹤的分支上.

如果我們想讓 Git 總是以 --recurse-submoles 拉取, 可以將配置選項 submole.recurse 設置為 true . 具體命令為 git config --global submole.recurse true . 此選項會讓 Git 為所有支持 --recurse-submoles 的命令使用該選項 (除 clone 以外).

如果我們在主項目中提交並推送但並不推送子模塊上的改動, 其他嘗試檢出我們修改的人會遇到麻煩, 因為他們無法得到依賴的子模塊改動. 那些改動只存在於我們本地的拷貝中.

為了確保這不會發生, 我們可以讓 Git 在推送到主項目前檢查所有 submole 是否已推送. git push 命令接受可以設置為 check 或 on-demand 的 --recurse-submoles 參數. 如果任何提交的 submole 改動沒有推送那麼 check 選項會直接使 push 操作失敗.(此外還有 demand , while , no 選項, 參考前節命令列表進行理解)

為了以後方便, 我們可以設置默認檢查 git config --global push.recurseSubmoles check

很多人用了 git submole 後, 都發現每次 update 之後, submole 中的 HEAD 都是 detached 狀態的, 即使本次 git checkout master 後, 下次更新仍然恢復原樣, 難道就沒有辦法使其固定在某個 branch 上嗎? 經過研究, 參考 stackoverflow 的答案, 我發現是可以解決的.

問題的關鍵在於 .gitmole 的配置:

我們需要添加 update = rebase 這行, 根據 git official 的說明

submole 的 update 有多種選擇, 默認情況下是 checkout , 其會根據 superproject 所記錄的 submole 的 commit 進行 checkout. 類似於 git checkout 4eda5fgrd , 這必然導致 submole 的 HEAD 處於 detached 狀態. 解決辦法就是使用 rebase ( merge 也可以), 這樣當我們對 submole 設置了一個初始的 branch 後, 其以後都只會在這個 branch 上對遠程的最新 commit 進行 rebase , 不會導致 detached 狀態的產生.

以 submole 的目錄為 ./C/ 為例. 具體的解決步驟如下:

此時, 以後再使用 git submole update 就不會有 detached 狀態的產生了

② 關於Ubuntu虛機內git submole的問題

一、Ubuntu系統默認內置:

實際上ubuntu默認沒有安裝老版本的vi,只裝了vim。vi是vim.tiny(vim的最小化版本,不含 GUI,並且僅含有一小部分功能,並且默認與vi兼容。此軟體包不依賴於vim-runtime軟體包)的一個別名,可用命令ls -l /usr/bin/vi來進行查看vi是指向/etc/alternatives/vi,而/etc/alternatives/vi 又指向/usr/bin/vim.tiny,從命令update-alternatives --display vi可以看出默認情況下,vi當前指向的是vim.tiny。

二、VIM版本及其對比:

不同的編譯選項編譯出來的vim而已。比如vim是終端下的vim-basic跟vim-tiny,而vim-gnome是用了GNOME2 GUI的vim,在gnome桌面系統上推薦安裝vim-gnome。

1、vim-tiny是tiny 版本的vim,就是功能比較少(前面有個+的表示有著功能),但是體積小,速度快。

1、vim-tiny是tiny 版本的vim,就是功能比較少(前面有個+的表示有著功能),但是體積小,速度快。

2、vim-basic:完整版的vim,不過同樣沒有圖形界面,沒有菜單

3、更多可以查看幫助文檔:http://vimdoc.sourceforge.net/htmldoc/various.html#+feature-list

提示:

ctags的功能很強大,更詳細的配置請參考其文檔。

建議在~/.vimrc中添加如下配置以使Vim在父目錄中尋找tags文件[10]:

set tags=tags;/

設置好後,可在Vim中使用如下功能:Ctrl-]轉至最佳匹配的相應Tag,Ctrl-T返回上一個匹配。如果有多個匹配,g Ctrl-]可顯示所有備選的tags。如有需要,可互換Ctrl-]和g Ctrl-][11]:

"在普通和可視模式中,將<c-]>與g<c-]>互換 nnoremap <c-]> g<c-]> vnoremap <c-]> g<c-]> nnoremap g<c-]> <c-]> vnoremap g<c-]> <c-]>

使用:make可調用make命令編譯程序,配合Vim內置的QuickFix功能,可以像IDE一樣打開一個窗口展示編譯錯誤和警告,通過它還可以方便地跳轉到各編譯錯誤的產生位置。

常用的命令有:cw[indow](如有錯誤打開quickfix窗口)、:cn(跳到下一個錯誤)、:cp(跳到前一個錯誤)等,具體可:help quickfix。

如果想在有錯時自動打開quickfix窗口[12]:

" 編譯後,如有錯誤則打開quickfix窗口。(游標仍停留在源碼窗口) " " 注意:需要開啟netsting autocmd autocmd QuickFixCmdPost [^l]* nested cwindow autocmd QuickFixCmdPost l* nested lwindow

默認情況下,:mak[e]會跳轉到第一個錯誤,如果不想啟用這個功能,請使用:make!。

代碼較長時可啟用代碼折疊功能,如按語法高亮元素折疊:

set foldmethod=syntax "默認情況下不折疊 set foldlevel=99

隨後即可使用z系列命令管理代碼折疊。如za會翻轉當前位置的折疊狀態,zA會遞歸翻轉當前層所有代碼的折疊狀態等。當然也可以把功能鍵映射到za:

map <F3> za

K鍵可用於查看當前函數的文檔。

近來仍被積極維護的代碼託管在 GitHub 上的插件[13]:

閱讀全文

與gitsubmodule命令相關的資料

熱點內容
下班之後的程序員 瀏覽:69
檢測支持ssl加密演算法 瀏覽:340
衢州發布新聞什麼APP 瀏覽:82
中國移動長沙dns伺服器地址 瀏覽:249
wifi密碼加密了怎麼破解嗎 瀏覽:596
linux命令cpu使用率 瀏覽:67
linux實用命令 瀏覽:238
傳奇引擎修改在線時間命令 瀏覽:109
php取域名中間 瀏覽:897
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:436
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:514
csgo您已被禁用此伺服器怎麼辦 瀏覽:398