如何将 git 子模块与特定哈希挂钩?
How can you peg a git submodule to a specific hash?
我有一个项目,里面有一个子模块。我希望能够使用 --recursive
克隆父项目,并在该子模块的特定哈希值处获取子模块。特定哈希不是任何分支的头部,它是特定提交。
从 svn 的角度将外部与特定修订挂钩。
我试图将子模块添加到一个分支并检查所需的散列,但是当我想提交更改时它保留了添加的初始散列。
基本上 Git 默认情况下,子模块与超级项目中的提交挂钩到特定哈希(即子模块的签出提交)(但是,子模块不会自动更新默认情况下,当您更改父存储库时 - 手动执行此操作 TortoiseGit 提供 "Submodule update" 功能,或者您可以配置 submodule.recurse
).
如果您的 .gitmodules
文件只为特定子模块设置了 url
和 path
值,那么如果"parent" 存储库。
当你比较包含子模块的提交时,你可以在日志对话框中验证这一点,然后你可以在那里看到子模块的哈希值。除非此提交在子模块中检出,否则它将在父存储库中报告为已修改。
为了将子模块更新到该特定版本(例如,在拉取或 switch/checkout 之后),您需要 运行 "Submodule update"(可能按顺序使用 force 选项强制子模块使用该修订版——这可能会导致子模块在本地丢失数据。
进一步阅读:
我有一个项目,里面有一个子模块。我希望能够使用 --recursive
克隆父项目,并在该子模块的特定哈希值处获取子模块。特定哈希不是任何分支的头部,它是特定提交。
从 svn 的角度将外部与特定修订挂钩。
我试图将子模块添加到一个分支并检查所需的散列,但是当我想提交更改时它保留了添加的初始散列。
基本上 Git 默认情况下,子模块与超级项目中的提交挂钩到特定哈希(即子模块的签出提交)(但是,子模块不会自动更新默认情况下,当您更改父存储库时 - 手动执行此操作 TortoiseGit 提供 "Submodule update" 功能,或者您可以配置 submodule.recurse
).
如果您的 .gitmodules
文件只为特定子模块设置了 url
和 path
值,那么如果"parent" 存储库。
当你比较包含子模块的提交时,你可以在日志对话框中验证这一点,然后你可以在那里看到子模块的哈希值。除非此提交在子模块中检出,否则它将在父存储库中报告为已修改。
为了将子模块更新到该特定版本(例如,在拉取或 switch/checkout 之后),您需要 运行 "Submodule update"(可能按顺序使用 force 选项强制子模块使用该修订版——这可能会导致子模块在本地丢失数据。
进一步阅读: