git submodule usage

Update: Looks like subtrees are a nicer alternative to submodules. Anyway..

  • To update all submodules:
git submodule update --init --recursive
  • To fetch the latest code from a submodule:
    cd <submodule-folder>
    git pull
    cd ..
    git commit -am "bumping up submodule version"

Then merge the code. The next time the parent repository is pulled, updating the submodule will get the latest commit in it.

git: rebase vs pull/merge

  • Instead of a normal pull, try this:

git pull --rebase origin master

git add <some-file>
git rebase --continue
  • To abort:
git rebase --abort
  • Finally:
git push origin master

git – Show/diff parents of a merge commit

git cat-file -p <commit>


git show --pretty=raw <commit>

Both these show similar information: the committer, the parent(s), commit text and so on.

Now that you have the two parents of a merged request (see above tip), you can see all files changed between its two parents with a command like this:

git diff --name-only <sha1> <sha2>