How to clone remote git repository which has git submodules

In our last post, we seen how to create a remote repository in github which actually uses git submodules to have one git directory inside another git directory. In our last post we created the repository at https://github.com/lynxbee/understanding-git-submodules , now lets try to clone the same as,

 $ git clone https://github.com/lynxbee/understanding-git-submodules 
 $ cd understanding-git-submodules/ 
 $ tree
.
├── README.superproject
├── submodule_one
└── submodule_two

2 directories, 1 file

As we can see with tree command, git clone of superproject ( main git ) only fetched main git contents and not the contents of the other gits (submodules) inside this git.

Lets see how many submodules this repository contains from .gitmodules file as,

 $ cat .gitmodules 
[submodule "submodule_one"]
	path = submodule_one
	url = https://github.com/lynxbee/submodule_one.git
[submodule "submodule_two"]
	path = submodule_two
	url = https://github.com/lynxbee/submodule_two.git

here we need to initialise the git submodules as,

$ git submodule init
Submodule 'submodule_one' (https://github.com/lynxbee/submodule_one.git) registered for path 'submodule_one'
Submodule 'submodule_two' (https://github.com/lynxbee/submodule_two.git) registered for path 'submodule_two'

Now lets sync all the remote repositories,

$ git submodule update
Cloning into 'submodule_one'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
Submodule path 'submodule_one': checked out 'bcf736c3d3ec573108d1c5f2b8dc98ed9cacea1e'
Cloning into 'submodule_two'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
Submodule path 'submodule_two': checked out '352bc0f00df1c62711045afa09da98478d94c2a7'
$ tree
.
├── README.superproject
├── submodule_one
│   └── README.md
└── submodule_two
    └── README.md
Android Android Commands Android Java Applications Application Libraries Bash / Shell Scripts Bluetooth driver Build Frameworks Commands and Packages Core Kernel C Programs Development Environment Setup Documents / Books Errors & Failures File Systems Framebuffer / Display Driver git Go Language Programs Hardware Platforms Home Kernel & Device Drivers Kernel Booting and Porting Linux, OS Concepts and Networking Linux Device Drivers Linux Host, Ubuntu, SysAdmin Linux Kernel Linux Networking Middleware Libraries, HAL NDK / Middleware / HAL Network Driver OS Concepts PHP Procfs Filesystem Programming Languages RaspberryPi Scripting and Automation Search Engine Optimisation ( SEO ) Social Media Socurce Code Management ( SCM ) System Administration, Security Testing and Debugging Uncategorized Userspace Utilities Web design and development Wordpress Yocto / Bitbake / Openembedded

Leave a Reply