如何从Git提交中移除子模块SHA变更?
解决方案
情况1:提交尚未推送到远程仓库
如果你的提交还没推送到远程,可以直接修改最近的提交,移除子模块的SHA变更:
- 撤销最近的提交,将所有修改退回到暂存区:
git reset HEAD~1
- 取消子模块文件的暂存状态:
git reset HEAD src/repo1 src/repo2
执行后,src/file1.cpp和src/file1.hpp仍保留在暂存区,子模块的SHA变更会回到未暂存状态。
- 重新提交你的修改:
git commit -m"你的提交描述"
- (可选)如果不需要保留子模块的本地更新,将子模块恢复到顶层仓库原记录的版本:
git submodule update src/repo1 src/repo2
情况2:提交已推送到远程仓库
如果提交已经推送到远程,为了不破坏仓库历史,建议新建一个提交来回滚子模块的SHA:
- 将子模块恢复到顶层仓库原记录的版本:
git submodule update src/repo1 src/repo2
- 提交恢复操作:
git commit -m"恢复repo1和repo2的子模块SHA至原版本"
内容的提问来源于stack exchange,提问作者A. K.
相关产品推荐
相关产品推荐

