diff across branches
git diff hoge fuga foo.txt
checkout tag
git checkout -b tagname refs/tags/tagname
pull branch
git checkout -b newbranch origin/newbranch
merge remote develop change
git checkout develop && git merge origin/develop
untrack files
git rm -r --cached "path/to/foo/"
submodule update
git submodule update --init --recursive
squash commits
http://labs.timedia.co.jp/2010/11/git-squash-commits.html
submodule local repo
git submodule add --reference /path/to/local_repo git://example.com/repo.git