Git Submodule: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
Git submodule is very simple where you have to aware about few things. Those are as following:
Git submodule is very simple where you have to aware about few things. Those are as following:
  1. After pull of submodule, you have to pull/commit main module
  1. After addition of submodule, you have commit main module must
  2. After commit of submodule, you have to commit main module
2. After pull of submodule, you have to pull/commit main module
  3. After commit of submodule, you have to commit main module


==Structure==
==Structure==
Line 84: Line 85:


==Client==
==Client==
<source lang="bash" highlight="4">
<source lang="bash" highlight="5">
# academia/client/AcademiaApp
# academia/client/AcademiaApp
cd /opt/chorke/academia/client/
cd /opt/chorke/academia/client/
git clone /opt/chorke/academia/server/academia-apps-ckiapp.git AcademiaApp
git clone /opt/chorke/academia/server/academia-apps-ckiapp.git AcademiaApp
cd AcademiaApp; git submodule init; git submodule update
# cd AcademiaApp; git submodule init; git submodule update
cd AcademiaApp; git submodule update --init


vim HelloApp.txt;git add HelloApp.txt
vim HelloApp.txt;git add HelloApp.txt
Line 116: Line 118:
# client/AcademiaApp/AcademiaGui
# client/AcademiaApp/AcademiaGui
cd /opt/chorke/academia/client/AcademiaApp/AcademiaGui/
cd /opt/chorke/academia/client/AcademiaApp/AcademiaGui/
git checkout master; vim HelloGui.txt
git checkout master; vim HelloGui.txt; git add HelloGui.txt
git add --all;git commit -m 'Hello GUI Added'
git commit -m 'Hello GUI Added'
git push origin master; cd ..
git push origin master; cd ..


Line 126: Line 128:
# academia/master/AcademiaGui
# academia/master/AcademiaGui
cd /opt/chorke/academia/master/AcademiaGui/
cd /opt/chorke/academia/master/AcademiaGui/
vim HelloAdd.txt;git add HelloAdd.txt
vim HelloAdd.txt; git add HelloAdd.txt
git commit -m 'Hello Add Text File Added'
git commit -m 'Hello Add Text File Added'
git push origin master
git push origin master
Line 143: 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==
* [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/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

References