如何使用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
相关产品推荐
相关产品推荐

