[[!comment format=mdwn username="http://christian.amsuess.com/chrysn" nickname="chrysn" subject="use mini-branches" date="2011-03-09T23:47:48Z" content=""" if you go for the two-commits version, small intermediate branches (or git-commit-tree) could be used to create a tree like this: * commit 106eef2 |\ Merge: 436e46f 9395665 | | | | the main commit | | | * commit 9395665 |/ | intermediate move | * commit 436e46f | | ... while the first commit (436e46f) has a \"`/subdir/foo → ../.git-annex/where_foo_is`\", the intermediate (9395665) has \"`/subdir/deeper/foo → ../.git-annex/where_foo_is`\", and the inal commit (106eef2) has \"`/subdir/deeper/foo → ../../.git-annex/where_foo_is`\". `--follow` uses the intermediate commit to find the history, but the intermediate commit would neither show up in `git log --first-parent` nor affect `git diff HEAD^..` & co. (there could still be confusion over `git show`, though). """]]