Git Submodule: Difference between revisions
Jump to navigation
Jump to search
(10 intermediate revisions by the same user not shown) | |||
Line 145: | Line 145: | ||
git pull origin master | git pull origin master | ||
</source> | </source> | ||
==Rename== | |||
<source lang="bash" highlight="6,7,10"> | |||
git clone /opt/chorke/academia/server/agronomy-apps-ckiapp.git AgronomyApp | |||
git clone /opt/chorke/academia/server/agronomy-apps-ckiapi.git AgronomyApi | |||
git clone /opt/chorke/academia/server/agronomy-apps-ckigui.git AgronomyGui | |||
cd AgronomyApp | |||
git mv AcademiaApi AgronomyApi | |||
git mv AcademiaGui AgronomyGui | |||
# update modules | |||
vim .gitmodules | |||
</source> | |||
==Knowledge== | |||
git submodule init | |||
git submodule update | |||
git config --global init.defaultBranch master | |||
==References== | ==References== | ||
* [https://stackoverflow.com/questions/17195861 Undo <code>git update-index --assume-unchanged</code>] | |||
* [https://stackoverflow.com/questions/1777854 Specify a branch/tag when adding a Git submodule] | * [https://stackoverflow.com/questions/1777854 Specify a branch/tag when adding a Git submodule] | ||
* [https://stackoverflow.com/questions/5542910 Commit changes in a git submodule] | |||
* [https://cdn.chorke.org/goto/watch?v=CRlGDDprdOQ Git Merge vs Rbase] <code>YouTube</code> | |||
* [https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging#_subtree_merge Git Tools Advanced Merging] | |||
* [https://stackoverflow.com/questions/4526910/ Git Rename a Submodule] | |||
* [https://git-scm.com/book/en/v2/Git-Tools-Submodules Git Tools Submodules] | |||
* [[GitLab]] | |||
* [[Git]] |
Latest revision as of 01:54, 13 March 2023
Git submodule is very simple where you have to aware about few things. Those are as following:
1. After addition of submodule, you have commit main module must 2. After pull of submodule, you have to pull/commit main module 3. After commit of submodule, you have to commit main module
Structure
:'
/opt/chorke/academia
├─ master
│ ├─ AcademiaApi
│ ├─ AcademiaGui
│ └─ AcademiaApp
├─ server
│ ├─ academia-apps-ckiapi.git
│ ├─ academia-apps-ckigui.git
│ └─ academia-apps-ckiapp.git
└─ client
├─ AcademiaApi
├─ AcademiaGui
└─ AcademiaApp
'
cd /opt/chorke/academia/server/
git init --bare academia-apps-ckiapi.git
git init --bare academia-apps-ckigui.git
git init --bare academia-apps-ckiapp.git
Master
:'
/opt/chorke/academia/master/AcademiaApi
├─ .gitignore
├─ README.md
└─ LICENSE
'
cd /opt/chorke/academia/master/AcademiaApi;git init
git remote add origin /opt/chorke/academia/server/academia-apps-ckiapi.git
git add --all; git commit -m 'initial commit'; git push origin master
:'
/opt/chorke/academia/master/AcademiaGui
├─ .gitignore
├─ README.md
└─ LICENSE
'
cd /opt/chorke/academia/master/AcademiaGui;git init
git remote add origin /opt/chorke/academia/server/academia-apps-ckigui.git
git add --all; git commit -m 'initial commit'; git push origin master
:'
/opt/chorke/academia/master/AcademiaApp
├─ .gitignore
├─ README.md
└─ LICENSE
'
cd /opt/chorke/academia/master/AcademiaApp;git init
git remote add origin /opt/chorke/academia/server/academia-apps-ckiapp.git
git add --all; git commit -m 'initial commit'; git push origin master
:'
git submodule add /opt/chorke/academia/server/academia-apps-ckiapi.git
git submodule add /opt/chorke/academia/server/academia-apps-ckigui.git
git rm --cached academia-apps-ckiapi; git rm --cached academia-apps-ckigui
git rm --cached .gitmodules; git reset --hard; git clean -fd
rm -rf academia-apps-cki*
'
git submodule add /opt/chorke/academia/server/academia-apps-ckiapi.git AcademiaApi
git submodule add /opt/chorke/academia/server/academia-apps-ckigui.git AcademiaGui
git config -f .gitmodules submodule.AcademiaApi.branch master
git config -f .gitmodules submodule.AcademiaGui.branch master
git commit -m 'academia-ruap-{ckiapi,ckigui} added'
git push origin master
Client
# academia/client/AcademiaApp
cd /opt/chorke/academia/client/
git clone /opt/chorke/academia/server/academia-apps-ckiapp.git AcademiaApp
# cd AcademiaApp; git submodule init; git submodule update
cd AcademiaApp; git submodule update --init
vim HelloApp.txt;git add HelloApp.txt
git commit -m 'Hello App Added'
Wrong
# client/AcademiaApp/AcademiaGui
cd /opt/chorke/academia/client/AcademiaApp/AcademiaGui/
vim HelloGui.txt; git add HelloGui.txt
git commit -m 'Hello Gui Added'
git status; cd ..; git status
# academia/client/AcademiaApp
git submodule status --recursive
git submodule foreach git pull origin master
git submodule foreach git push -u origin master
# academia/master/AcademiaGui
cd /opt/chorke/academia/master/AcademiaGui/
git pull origin master
Right
# client/AcademiaApp/AcademiaGui
cd /opt/chorke/academia/client/AcademiaApp/AcademiaGui/
git checkout master; vim HelloGui.txt; git add HelloGui.txt
git commit -m 'Hello GUI Added'
git push origin master; cd ..
# academia/client/AcademiaApp
git add AcademiaGui; git commit -m 'AcademiaGui updated'
git push origin master
# academia/master/AcademiaGui
cd /opt/chorke/academia/master/AcademiaGui/
vim HelloAdd.txt; git add HelloAdd.txt
git commit -m 'Hello Add Text File Added'
git push origin master
# client/AcademiaApp/AcademiaGui
cd /opt/chorke/academia/client/AcademiaApp/AcademiaGui/
git pull origin master; cd ..
# academia/client/AcademiaApp
git add AcademiaGui; git commit -m 'AcademiaGui updated'
git push origin master
# academia/master/AcademiaApp
cd /opt/chorke/academia/master/AcademiaApp/
git submodule foreach git pull origin master
git pull origin master
Rename
git clone /opt/chorke/academia/server/agronomy-apps-ckiapp.git AgronomyApp
git clone /opt/chorke/academia/server/agronomy-apps-ckiapi.git AgronomyApi
git clone /opt/chorke/academia/server/agronomy-apps-ckigui.git AgronomyGui
cd AgronomyApp
git mv AcademiaApi AgronomyApi
git mv AcademiaGui AgronomyGui
# update modules
vim .gitmodules
Knowledge
git submodule init git submodule update git config --global init.defaultBranch master