This suppose you have a GIN repository that has submodules in it. On the web browser version, you go to the parent repository and get its ssh or gin address. Now, we will make a copy on our computer, and show pull/push actions to/from the local copy and the server copy.

Clone parent

initialise

datalad get -n -r . ## will get submodule data (version linked in parent), git-annexed files not downloaded
datalad update -r --how=merge --follow=sibling # update to the latest version in every submodule

download changes

datalad update -r --how=merge --follow=sibling # update to the latest version in every submodule

Note: to get files which were pushed via git annex, you need to use datalad get -r ., you may define one file or folder instead of all (.means all), and the -r means it will do it for submodules too.

upload changes

datalad save . -r -m 'this is the commit message'
datalad push -r --to origin

NB: save will use git annex unless told to do otherwise. Since we did not create the repo using datalad, it will put everything via git-annex (?) and the configuration files to change that behavior were not created.