Skip to content

Instantly share code, notes, and snippets.

@sanusart
Forked from dannyroberts/preserving-history.md
Last active January 27, 2018 16:58
Show Gist options
  • Save sanusart/bab0b203ea594792c3db to your computer and use it in GitHub Desktop.
Save sanusart/bab0b203ea594792c3db to your computer and use it in GitHub Desktop.
rename whole directories while preserving the git history #git

Did you know...

...that git lets you move and rename whole directories while preserving the git history of those files?

If you run

git read-tree --prefix=$NEW_PATH -u master:$OLD_PATH
rm -rf $OLD_PATH
# ...you probably want to change some imports...
git commit -m $MESSAGE

that will move the directory tree to the new location, and, when you commit, it'll preserve this history of those files.

Things that still work:

  • git blame
  • git merge with code that branched off before the renaming (incredible!)
    • you may have to set merge.renamelimit to something higher for this to work, i.e. git config merge.renamelimit 4000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment