The best solution is to create a new branch with --orphan
option as shown below
git checkout --orphan <branch name>
By this you will be able to create a new branch and directly checkout to the new branch. It will be a parentless branch.
By default the --orphan
option doesn't remove the files in the working directory, so you can delete the working directory files by this:
git rm --cached -r
In details what the --orphan
does:
--orphan <new_branch>
Create a new orphan branch, named <new_branch>
, started from <start_point>
and switch to it. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.
The index and the working tree are adjusted as if you had previously run git checkout <start_point>. This allows you to start a new history that records a set of paths similar to <start_point> by easily running git commit -a to make the root commit.
This can be useful when you want to publish the tree from a commit without exposing its full history. You might want to do this to publish an open source branch of a project whose current tree is "clean", but whose full history contains proprietary or otherwise encumbered bits of code.
If you want to start a disconnected history that records a set of paths that is totally different from the one of <start_point>, then you should clear the index and the working tree right after creating the orphan branch by running git rm -rf . from the top level of the working tree. Afterwards you will be ready to prepare your new files, repopulating the working tree, by copying them from elsewhere, extracting a tarball, etc.
submodule
in the original project, e.g.docs/
pointing to that other repo. Or, if you want to merge the code later, add it as a remote. – Designate.gitignore
'd files, and also constantly switch between the two roots (branches). So I'm also for the new repo approach, in a new folder, having the same remotes, and pushing to another branch. – Develop