簡體   English   中英

查找 git 中的所有子模塊及其提交

[英]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``: add repo_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM