Git主仓库因子模块重写历史致提交失效,如何更新?
解决主仓库中子模块失效提交的更新问题
当子模块因rebase强制推送重写历史后,主仓库引用的旧提交会失效,可通过以下Git命令行步骤更新主仓库的子模块引用:
同步子模块到远程最新状态
进入子模块目录,拉取远程重写后的最新代码,并强制重置本地分支到远程最新提交:cd src/myGitSubmoduleProject git fetch origin <certain-branch> git reset --hard origin/<certain-branch>注意:
reset --hard会清除子模块本地未提交的修改,执行前请确认本地无未保存的变更。更新主仓库的子模块引用
返回主仓库,将子模块的最新提交引用加入暂存并提交:cd ../../ git add src/myGitSubmoduleProject git commit -m "更新子模块引用至rebase后的最新有效提交" # 若需推送到远程主仓库,执行以下命令 git push origin <certain-branch>
完成以上步骤后,主仓库就会引用子模块的最新有效提交,其他协作成员拉取主仓库代码后,执行git submodule update --init --recursive即可同步到正确的子模块版本。
内容的提问来源于stack exchange,提问作者haxpor
相关产品推荐
相关产品推荐

