Git提交与Stash问题求助:如何提交src目录而非其子目录main
解决方案:将整个ProjectA(含完整src目录)提交至Git Stash
首先得明确问题根源:你的src目录里有独立的.git文件夹,这会让Git把它识别为子模块——默认情况下,当你在父目录(ProjectA)操作Git时,只会记录子模块的commit哈希,而不会包含其内部的文件内容。另外,ProjectA本身没有初始化Git仓库,所以首先得把它变成一个Git仓库,同时处理src的子模块问题,才能把整个目录提交到stash。
下面分两种场景给出方案:
场景1:不再需要src作为独立Git仓库
如果你想将src完全合并到ProjectA的仓库中,不再保留它的独立Git历史:
- 打开终端,切换到ProjectA目录:
cd /path/to/ProjectA - 进入src目录,删除里面的
.git文件夹(这会清除src的独立Git历史,操作前请确认是否需要备份):cd src rm -rf .git cd .. - 在ProjectA目录初始化Git仓库:
git init - 添加所有文件到暂存区:
git add . - 现在就可以将这些内容stash起来了:
git stash push -m "Stash entire ProjectA including src"
场景2:需要保留src的独立Git仓库
如果你还想保留src的独立Git历史,只是临时把整个ProjectA(含src所有文件)stash起来:
- 切换到ProjectA目录,先初始化Git仓库:
cd /path/to/ProjectA git init - 进入src目录,临时重命名
.git文件夹,让Git不再把它识别为子模块:cd src mv .git .git-temp cd .. - 添加ProjectA下的所有文件到暂存区:
git add . - 执行stash操作:
git stash push -m "Stash entire ProjectA with src files" - 恢复src的独立Git仓库:
cd src mv .git-temp .git cd ..
这样操作后,你的stash里就会包含整个ProjectA目录的内容,而不是仅src/main或者子模块引用了。
内容的提问来源于stack exchange,提问作者shree
相关产品推荐
相关产品推荐

