我有一个父级目录:
Parent/
在里面有很多子git项目:
Parent/前端/react-01/.git
Parent/前段/react-02/.git
Parent/后端/django-01/.git
Parent/后端/java-01/.git
我把Parent放在GitHub上的,然后我clone到本地,比如我修改了Parent/前端/react-01
项目,可以只管理推送此项目吗?
我有一个父级目录:
Parent/
在里面有很多子git项目:
Parent/前端/react-01/.git
Parent/前段/react-02/.git
Parent/后端/django-01/.git
Parent/后端/java-01/.git
我把Parent放在GitHub上的,然后我clone到本地,比如我修改了Parent/前端/react-01
项目,可以只管理推送此项目吗?
没太理解你的问题,什么叫“只管理推送此项目”?
这么说吧,Parent/前端/react-01/
下发生的变更,只会被 Parent/前端/react-01/.git
追踪,而不会被 Parent/.git
追踪。推送也是推送到 Parent/前端/react-01/.git
所配置的远程源,推送不到 Parent/.git
的源上。
这种子目录下面还有 .git 的,叫 Git Submodule。git 也确实提供了相关命令,可以让你在父项目下直接操作子项目里的相关模块,但要注意这种操作仅仅是为了方便你、用不着 cd 到每个子项目底下再执行相关操作,并不意味着父项目会直接追踪这些变更。
https://git-scm.com/book/en/v2/Git-Tools-Submodules
https://git-scm.com/docs/git-submodule
git有个git submodule
和git subtree
功能,可以将多个子git
仓库通过一个父git
仓库整合起来,目录结构会变成(git submodule
为例)
Parent
.git/
.gitmodules
前端/
react-01/
.git/
react-02/
.git/
后端/
django-01/
.git/
java-01/
.git/
你可以分别只对一个仓库修改并提交,命令也没有变化,但是git submodule
相关的命令你们团队要学习,例如
git clone --recurse-submodules xxx
git submodule foreach 'git pull'
git submodule foreach 'git checkout branch'
某个子仓库react-02/
操作
cd react-02/;
# 修改文件
git add *.css
git commit -m 'xxx';
git push;
# 切换到abc分支
git checkout abc;
最后,还需要团队管理者管理.gitmodules
文件,里面记录了各个子模块的地址和分支信息等
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
8 回答3.7k 阅读
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
看你的描述,也结合另外两位大佬回答,分析你给的目录结构,感觉你这既不属于submodules、也不属于subtree、更不属于menorepo,不然parent应该有自己的一份package.json的,所以你这所有的项目之间没有任何关系,不过你可以利用上述的三种方法改善自己的项目结构,这样就可以方便管理自己的项目了,当然每种方案都有优劣势,自己调查清楚后酌情采用。