-
-
Save seanbuscay/5877413 to your computer and use it in GitHub Desktop.
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 |
@shadiakiki1986 perhaps you're looking for gist:7df6c8a50c04e5b80d84f28938b3e258
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.
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.
Note that git switch --orphan <branch name>
automatically removes ALL tracked files from the working tree (as it should, since we don't want files from other branches — it's an orphan branch). It will not remove
- untracked files
- modified (not yet committed) tracked files (because it refuses to proceed in this scenario)
This is independent of .gitignore
. However, there are many other ways to exclude files (e.g. .git/info/exclude
, git update-index --skip-worktree
etc). If you use any of those, possibly together and along .gitignore
, you probably have bigger things to worry about.
Note that using
git switch --orphan <branch name>
automatically removes ALL files from the working tree.