cd repository | |
git checkout --orphan orphan_name | |
git rm -rf . | |
rm '.gitignore' | |
echo "#Title of Readme" > README.md | |
git add README.md | |
git commit -a -m "Initial Commit" | |
git push origin orphan_name |
Commenting on KartikSoneji (Jul 15) above: git: 'switch' is not a git command. See 'git --help'.
@anfxanfx
git switch
was introduced in git 2.23, you might need to update your git client.
https://git-scm.com/docs/git-switch
For those who don't have access to a bleeding-edge version of git, I have a simple work-around: make an empty commit when the repo is new, tag it, and then use that as the base for any orphan branches.
git init
git commit --allow-empty
git tag empty
then git checkout --orphan
new_branch
empty
.
As a bonus, you can now use git rebase -i empty
, to amend or remove what would otherwise have been the "initial" commit.
@KartikSoneji the documentation still (as of 2.29.0) says:
THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.
On git 2.23, all I needed was:
git switch --orphan <branch_name>
git commit --allow-empty -m "<commit_msg>"
git push origin <branch_name>
shadiakiki1986
you're looking for "checkedout", not "checkout'ed" 👍
@SeanHorner see gist:7df6c8a5…
(I note that checkout
is a git verb, so in this context it's not so unreasonable to conjugate it as checkouts and checkouted - just as long as nobody says those out loud.)
@SeanHorner see gist:7df6c8a5…
(I note that
checkout
is a git verb, so in this context it's not so unreasonable to conjugate it as checkouts and checkouted - just as long as nobody says those out loud.)
Ah, didn't think about it in that context, was using my linguist brain, not coding brain xD. Very interesting (and thorough) discussion in the linked gist 👍
Note that using
git switch --orphan <branch name>
automatically removes ALL files from the working tree.
Note that whatever is ignored by .gitignore won't be removed.
@shadiakiki1986 perhaps you're looking for gist:7df6c8a50c04e5b80d84f28938b3e258