I have two local projects which I manage with git, one being dependent on the other – like this:
project A/
├── project B/
│ ├── file B₁
│ ├── file B₂
│ ├── …
It makes sense to me to have project B as a git submodule of project A.
Now, I have set up a remote bare repository for project A for backup and sharing purposes. Of course, I want the remote repository to contain all of project B, including its files (file B₁, file B₂, …). But git push and git push --recurse-submodules=on-demand don’t achieve this. Whenever I list the files in my remote repository by git ls-tree -r HEAD, only the files of project A itself are listed. This does make sense to me.
However, is there a way to push the entire submodule project B to my remote base repository somehow, preferably in a clean way?
If B is actually a submodule, you should have a .gitmodule referencing it.
In that .gitmodule file, you would see the remote repo URL where B is pushed, in case there is any new commits done in B.
But B being a submodule means A won't have B files in it, only a reference to B SHA1.
If you want, you can un-submodule B (with my answer or this one) in order to keep all the B files in A.
A submodule has to have a separate repository. Create a new bare repo and push your submodule to it.
来源:https://stackoverflow.com/questions/48936752/git-push-a-local-git-submodule-including-submodule-files-to-a-remote-bare-rep