askalee
6/21/2018 - 5:08 AM

Git: move files in an subfolder keeping history

Git: move files in an subfolder keeping history

Change structure of project folder with Git

I have this structure:

 project-folder/
     .git
     wp-admin/
     wp-content/
     wp-includes/
    .htaccess
    ...

I want this structure:

 project-folder/
     .git
     public
          wp-admin/
          wp-content/
          wp-includes/
         .htaccess
         ...

The benefits

  • Keep away from the Internet my .git folder
  • Wordpress files separated in a sub-folder
  • Keep Git history changes
  • Hide from the Internet deployment scripts or project sensitive informations

Move files with git and keep file history

  1. Be sure you don't have files uncommitted, if not commit them before next step.

    git status

  1. In project-directory create public subfolder

    mkdir public

  2. Move files with git mv except public subfolder to avoid errors

    for file in $(ls | grep -v '^public$'); do git mv $file public; done;

  3. Move specific files like .htaccess etc...

    git mv .htaccess public/

  4. Commit changes

    git commit -m 'Moved files to public/'

  5. That's all !

    git log -M summary

To see file history of moved files

In Bash:

git log --follow

http://git-scm.com/docs/git-log

In SourceTree:

On logging file(s) you have to check [x] Follow renamed files