I have in a folder a large number of projects that I cloned for quite some time; recently I moved this whole folder into one of my repos and would like to convert these cloned p
Adding existing git repository as a submodule is the same as adding a new one.
git init
.git submodule add https//example.com/remoterepo ./localrepo
, where ./localrepo
is your existing git repository.
remoterepo
from localrepo/.git/config
.git submodule foreach git pull
to update all your subprojects.You may want to write a small script to automate the second step if you have lots of submodules, which shouldn't be difficult.
The following is what I used for trying to reproduce the error mentioned in the comments. I triple checked the commands, and I still can't see the error:
git --version
mkdir submoduletest
cd submoduletest
git init --bare remote_repo_A
git init --bare remote_repo_B
git clone remote_repo_A local_repo_A
git clone remote_repo_B local_repo_B
cd local_repo_A
echo "test commit on repo B" >> test.txt
git add test.txt
git commit -m 'test commit message'
git push origin master
cd ../local_repo_B
echo "test commit on repo B" >> test.txt
git add test.txt
git commit -m 'test commit message'
git push origin master
cd ../local_repo_A
git clone ../remote_repo_B local_repo_B
git submodule add ../remote_repo_B ./local_repo_B
git submodule foreach git pull origin master
git add .
git ci -m 'we just added a submodule for remote_repo_B'
git submodule status
Use the following command to check current status of local_repo_A
, it has only two blob objects, one for 'test.txt' and another for the implicitly created '.gitmodules' file, nothing from remote_repo_B
are added to the index of local_repo_A
.
find .git/objects -type f | awk -F/ '{print $3$4}' | xargs -I {} git cat-file -t {} | grep blob
The reason I rolled back the edits is because the edits is simply WRONG, it was already rejected by two other mediators and me, but later some other guy approved it, I am not sure if it is a bug of SO or what. But the edits are rejected, even now because it's totally wrong, I already explained why in the comments, I am no offensive to anyone, but this wasted my time, downvote it if the answer is not helpful to you.
Again, if you are not improving it, DON'T edit my answer.