[英]Find all submodules in git and their commits
我的 git 存儲庫中有一個項目,其中包含子模塊,這些子模塊包含 feather 子模塊。
由於我不對所有子模塊負責,所以我不知道在更新我正在查看的提交后那里發生了什么變化。 出於這個原因,我想記錄當前的 state。
這意味着,我想知道我正在使用的所有子模塊(顯式和非顯式)。 對於每個子模塊,我想知道它的標簽和/或提交。
我發現:
git ls-files --stage
有幫助,但只顯示來自我的存儲庫的提交,而不是子模塊內部的提交。
任何的想法?
git submodule foreach --recursive "git describe --tags HEAD --exact-match 2>/dev/null || git rev-parse HEAD"
在每個子模塊中遞歸運行命令git describe --tags HEAD --exact-match 2>/dev/null || git rev-parse HEAD
git describe --tags HEAD --exact-match 2>/dev/null || git rev-parse HEAD
首先,嘗試找到恰好指向每個子模塊的頭提交的最新標簽。 如果未找到標簽,則返回提交。
git ls-files --stage
有幫助,但只顯示來自我的存儲庫的提交,而不是子模塊內部的提交。
在 Git 2.36(2022 年第 2 季度)之前,“ls-files”的許多 output 模式無法使用其“--recurse-submodules”選項,但“--stage”模式現在已被教導可以使用它。
請參閱Jonathan Tan ( jhowtan
)的提交 290eada (2022 年 2 月 23 日)。
(由Junio C Hamano 合並gitster
提交 7a4e06c ,2022 年 3 月 6 日)
ls-files
: 支持--recurse-submodules --stage
簽字人:Jonathan Tan
e77aa33 (“
ls-files
:可選地遞歸到子模塊”,2016 年 10 月 10 日,Git v2.11.0-rc0 - 合並列在批次 #11中)教ls-files
--recurse-submodules
參數,但僅在有限的情況。特別是,
--stage
不受支持,可能是因為沒有repo_find_unique_abbrev()
,它僅在8bb9557中引入("sha1
-name.c``: addrepo_find_unique_abbrev_r()
", 2019-04-16, Git v2.22.0 -rc0—— 合並在第 8 批中列出)。將
--recurse-submodules
與 --stage 一起使用需要這個 function。
git ls-files
現在包含在其手冊頁中:
--recurse-submodules
:在存儲庫中的每個活動子模塊上遞歸調用
ls-files
。目前僅支持
--cached
和--stage
模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.