I have multiple projects that I\'d like to put up onto GitHub.com. All of these projects are in my local Git repository. I have just one repository, but for each project, I\'d
Depending on how your repo is organized, you can use git filter-branch
to create a new repo for each project, retaining history for each individual project only.
Assuming your current repo structure is like this:
repo/
project1/
project1-file
project2/
project2-file
project3/
project3-file
You can first clone your repo (git filter-branch
will remove files and their history, so clone your original repo first). Then, in your cloned repo, you can use git filter-branch
to create a new repo (with all the old history) at the root of project1
:
$ git filter-branch --subdirectory-filter project1 HEAD
Now, your repo will look like the following:
repo/
project1-file
And it will still contain the history for all files that were stored under project1/
in the old repo.
Repeat that step for each project, and you will now have three independent repos, with all the history for their relevant projects.
If I'm understanding the question, you've got one large repo that contains a number of projects. You would like to break each of those projects out into individual repos without losing history. Bottom line is yes, you have to redo your repository layout and create new git repositories for each project. You don't need to lose history, though.
You'll still have all the history prior to breaking the original repo up, but now each project is it's own repository.
If you don't mind losing your history, making each project into it's own git repo is as simple as running git init
in the project directory. This will create a new repo for just that project.