Once upon a time all my Android apps and VMSoft related stuff were part of one big BitBucket git repository along with an issue tracker. This was a good idea when being an Android dev was just a hobby for the weekends and not my primary job.
Enough rambling 🙂 , this blog post is about moving files from one git repository to another and preserving your history.
Our goal is to move a single directory from one big Git repository to it’s own repository, we would like to preserve the commits history for that specific directory also.
In this example our big repo will be called A and our new repo that will host it’s own subset of files will be called B
First filter the files from the big repo (A) by leaving only the ones you need:
git clone< repo A url >cd< repo A directory >
git clone < repo A url >
cd < repo A directory >
Remove the “origin”
git remoterm origin
git remote rm origin
and filter A by < directory_to_move >. This action will go trough all the history and files and remove anything that’s not in < directory_to_move >.
More info on the inner workings of git filter-branch here.
After migrating to SSH authentication for my Bitbucket repo ( one of the reasons for doing that was to be able to mirror my repo on my home server, article on that topic coming soon ), the TortoiseGIT windows client stopped working. It was unable to do pulls and pushes and all other functionallity related to connecting to the remote GIT. Android Studio and other IDE’s and tools I use on a daily basis, including git command line client were working properly.
TortoiseGIT uses Pageant (part of the PuTTY toolset) to manage it’s authentication keys. Because I have already generated the public / private key pair using ssh-keygen all I needed to do was make Pageant aware of them.
For this Puttygen (part of the PuTTY toolset) should be used.
Load the key in Puttygen (you will be prompted for password during the loading process), leave the default settings. If the import was successful you will get a message telling you so.
Then click ‘Save private key’ button and save your private key in putty default ppk format. Fire up Pageant and load your newly created key.
Now pulls, pushes and all other functionallity related to connecting to the remote GIT should work as expected.
NOTE: Pageant should be started prior to using TortoiseGIT, else you will get the same error message again.