You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:38:44