vmiklos@vmobile:~/git/test$ ls vmiklos@vmobile:~/git/test$ mkdir server vmiklos@vmobile:~/git/test$ cd server vmiklos@vmobile:~/git/test/server$ mkdir main vmiklos@vmobile:~/git/test/server$ cd main vmiklos@vmobile:~/git/test/server/main$ git init Initialized empty Git repository in .git/ vmiklos@vmobile:~/git/test/server/main$ echo "foo" > main.c vmiklos@vmobile:~/git/test/server/main$ git add main.c vmiklos@vmobile:~/git/test/server/main$ git commit -m "import main" Created initial commit 1ceae8f: import main 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 main.c vmiklos@vmobile:~/git/test/server/main$ cd .. vmiklos@vmobile:~/git/test/server$ mkdir libfoo vmiklos@vmobile:~/git/test/server$ cd libfoo vmiklos@vmobile:~/git/test/server/libfoo$ git init Initialized empty Git repository in .git/ vmiklos@vmobile:~/git/test/server/libfoo$ echo "foo" > libfoo.c vmiklos@vmobile:~/git/test/server/libfoo$ git add libfoo.c vmiklos@vmobile:~/git/test/server/libfoo$ git commit -m "import libfoo" Created initial commit 5979d36: import libfoo 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 libfoo.c vmiklos@vmobile:~/git/test/server/libfoo$ cd ../.. vmiklos@vmobile:~/git/test$ mkdir client vmiklos@vmobile:~/git/test$ cd client vmiklos@vmobile:~/git/test/client$ git clone ../server/main Initialized empty Git repository in /home/vmiklos/git/test/client/main/.git/ remote: Generating pack... Done counting 3 objects. Deltifying 3 objects... 100% (3/3) done Total 3 remote: (delta 0), reused 0 (delta 0) Indexing 3 objects... 100% (3/3) done vmiklos@vmobile:~/git/test/client$ cd main vmiklos@vmobile:~/git/test/client/main$ ls main.c vmiklos@vmobile:~/git/test/client/main$ git submodule add ../../server/libfoo/ libfoo Initialized empty Git repository in /home/vmiklos/git/test/client/main/libfoo/.git/ remote: Generating pack... remote: Done counting 3 objects. remote: Deltifying 3 objects... 100% (3/3) done Total 3 (delta 0), reused 0 (delta 0) Indexing 3 objects... 100% (3/3) done vmiklos@vmobile:~/git/test/client/main$ git submodule init Submodule 'libfoo' (/home/vmiklos/git/test/server/libfoo/.git) registered for path 'libfoo' vmiklos@vmobile:~/git/test/client/main$ git commit -a -m "registered libfoo submodule" Created commit 2c65310: registered libfoo submodule 2 files changed, 4 insertions(+), 0 deletions(-) create mode 100644 .gitmodules create mode 160000 libfoo vmiklos@vmobile:~/git/test/client/main$ cd ../../server/main vmiklos@vmobile:~/git/test/server/main$ echo bar >> main.c vmiklos@vmobile:~/git/test/server/main$ git add git commit -m "bar in main" vmiklos@vmobile:~/git/test/server/main$ git add main.c vmiklos@vmobile:~/git/test/server/main$ git commit -m "bar in main" Created commit 1c26399: bar in main 1 files changed, 1 insertions(+), 0 deletions(-) vmiklos@vmobile:~/git/test/server/main$ cd ../libfoo vmiklos@vmobile:~/git/test/server/libfoo$ echo bar >> libfoo.c vmiklos@vmobile:~/git/test/server/libfoo$ git add libfoo.c vmiklos@vmobile:~/git/test/server/libfoo$ git commit -m "bar in libfoo" Created commit 07ceadb: bar in libfoo 1 files changed, 1 insertions(+), 0 deletions(-) vmiklos@vmobile:~/git/test/server/libfoo$ cd ../../client/main vmiklos@vmobile:~/git/test/client/main$ git submodule update