Open uniquejava opened 6 years ago
git submodule status
返回值中的+
号表示该submodule指向的不是parent期望的那次commit.
git submodule status
## +59b5c9 child (...)
cd child
git checkout 80fb82e
git status
## HEAD detached at 80fb82e
cd ..
git status
## modified: child (new commits)
git add child
git commit -m "Changed refrence of child submobule to go back to better state"
Why
我有一个前端的vue项目, 我想用
java/nodejs/flask
等不同的技术栈给它写后端API. 我想直接把vue项目内嵌到后端项目中, 作为它们的子项目升级/或降级
到它想要的任意版本.这种情况下, git submodules应该是最好的选择.
References
https://www.youtube.com/watch?v=8Z4Cmhji_FQ
Dan Gitschooldude的系列视频
Mastering Git submodules
Notes
假设你的项目名为
parent
, 你想将一个名为child
的项目做为submodule加到你的项目之下.其它人如果想要clone你的parent项目
他会发现parent下多了一个叫
.gitsubmodules
的文件, 然后多了一个名为child的子目录, 然而进去后是空的如果你在child中add了代码, 然后
cd .. && git status
如果你在child中commit了代码
如果你在child中commit了部分代码
假设以上操作全部都是在child的一个叫testing_branch的分支上操作的. 现在如果执行
所以
git submodule update child
等价于cd child && git checkout current_branch