git submodule fatal: please stage your changes to .gitmodules or stash them to proceed

本文详细介绍了如何在Git项目中删除并重新添加submodule。步骤包括使用GitBash删除子模块,编辑.git/config和.git/modules配置,处理'already exists in the index'错误,以及更新.gitmodules文件。确保正确操作,避免数据丢失。
摘要由CSDN通过智能技术生成

— 简洁版 ↓↓↓↓ —

$ rm -rf submodule/sub_project1
$ cd .git
$ vim config 

输入i 进入-- INSERT --模式,在这个模式可以编辑文件内容

$ i

删掉 submodule 中sub_project1 的相关信息
Esc键盘,退出文本输入编辑模式
输入:,再输入wq退出 config 文件,

$ cd modules
$ rm -rf submodule/sub_project1

$ cd ../../submodule
$ git submodule add gitlab.xxx.com/xxx/sub_project1.git

如果add子模块,提示'sub_project1 already exists in the index',就要

$ git rm --cached sub_project1

Please stage your changes to .gitmodules or stash them to proceed报错,删掉 .gitmodules 文件,并把修改记录添加到暂存区

$ cd ..
$ rm ./.gitmodules
$ git add .

$ cd submodule
$ git submodule add gitlab.xxx.com/xxx/sub_project1.git

— 简洁版完—

— 图文版 ↓↓↓↓ —

nuxt 项目,项目名:myProject
部分目录省略
- myProject
   - .git
   - assets
   - pages
   - submodule
      - sub_project1
      - sub_project2
   - .gitmodules
   - .gitignore
   - nuxt.config.js
   - ... ...

基于已安装git bash 的情况下,

打开myProject 文件夹所在位置,鼠标右键选择Git Bash Here

请添加图片描述

直接删掉submodule中的子模块,比如删掉sub_project1

$ rm -rf submodule/sub_project1
在这里插入图片描述

到.git文件夹下删掉所有相关的东西

$ cd .git

删除myProject/.git/config相关内容

$ vim config
输入i 进入-- INSERT --模式,在这个模式可以编辑文件内容
$ i
删掉submodule信息
Esc键盘,退出文本输入编辑模式
输入:,再输入wq退出 config 文件,

删除myProject/.git/modules相关内容

进入myProject/.git/modules目录,删除 sub_project1的相关数据,慎重!敲错容易误删!防止错误删除,可以到文件夹手动删除
$ cd modules
$ rm -rf submodule/sub_project1

回到submodule文件夹,git submodule add xxx(git仓库地址)

$ cd …/…/submodule
$ git submodule add gitlab.xxx.com/xxx/sub_project1.git

'sub_project1 already exists in the index'报错,用 --cached

如果直接add子模块,提示'sub_project1 already exists in the index',就要
$ git rm --cached sub_project1

Please stage your changes to .gitmodules or stash them to proceed报错,删掉 .gitmodules 文件,并把修改记录添加到暂存区

! 如果提示Please stage your changes to .gitmodules or stash them to proceed,
直接删掉.gitmodules文件,并且把删掉 .gitmodules 的记录提交到仓库的暂存区中
否则每次添加 sub_project1子模块,都会提示 'sub_project1 already exists in the index'

返回上一层目录,删掉 .gitmodules 文件
$ cd …
$ rm ./.gitmodules
$ git add .

重新进入submodule,进行添加

$ cd submodule
$ git submodule add gitlab.xxx.com/xxx/sub_project1.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值