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

如何使用Git Subtree在项目中正确添加子目录、修改内容并同步至主远程仓库?

Git Subtree 相关问题解答

嘿,我来帮你理清这些关于Git Subtree的疑问!

一、子目录未被Git跟踪的问题:不正常,这样解决就能推送到主仓库远程

你提到执行git subtree add后,git status没显示子目录被跟踪,这种情况是不正常的——正常情况下,git subtree add命令会自动把第三方仓库的内容添加到主仓库的暂存区,应该会在git status里看到新添加的文件/目录。

可能的原因包括命令参数输入错误(比如<#commit>格式不对,或者远程URL有误),或者终端环境的小问题。不管原因是什么,你可以通过以下步骤手动让Git跟踪这个子目录并推送到主仓库:

  • 第一步,将子目录加入暂存区:
    git add <my-dir-name>
    
  • 第二步,提交更改到本地仓库:
    git commit -m "Add third-party Node repo as subtree at <my-dir-name>"
    
  • 第三步,推送到主仓库的远程端:
    git push origin <你的主分支名称,比如main>
    

完成这些操作后,你的同事克隆主仓库时,就能获取到包含这个子目录的完整代码了。

二、不需要推送原远程仓库?完全不用git subtree split

你完全不需要使用git subtree split命令!这个命令的核心作用是把主仓库里的子目录内容拆分出来,推送到另一个远程仓库(也就是你说的第三方原仓库),而你的需求只是从原仓库拉取更新、定期同步,完全不需要向原仓库推送内容,所以git subtree split对你来说毫无用处。

之后你要更新子目录到指定版本时,只需要用以下命令即可:

git subtree pull --prefix <my-dir-name> <remote-url> <目标commit或分支> --squash

其中--squash参数可以把原仓库的多个提交合并成一个提交记录到主仓库,避免主仓库的提交历史过于杂乱,非常适合你的使用场景。

内容的提问来源于stack exchange,提问作者Esthetic Nerd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:24:07