Is it possible to completely empty a remote Git repository?

I think you may have an XY problem. You don't actually need to get the remote repository back into its original state in order to start over; you simply need to start over locally, then force-push that to the remote.

# create a new repository that has the initial commit that you want
mkdir foo; cd foo; git init; ...; git commit

# set up a remote
git remote add origin <url-of-remote>
git branch --set-upstream master origin/master

# push your new history
git push -f

# delete obsolete remote branches
git push origin :deprecated-branch

The remote repository never returns to a no-commits state, but it ends up where you want it, and that's all that matters!

(Under the hood, the old commits are actually still in the remote repository, but they're left dangling, with no refs pointing to them. They'll be automatically removed when git gc --auto is triggered by a push at some point.)

If you really, really want to empty it for some reason, you can set receive.denyDeleteCurrent in the remote repository, and push-delete all branches, including the current one. I don't see why you actually need to, though!


Below steps will do it easily, Be careful to take master backup in case needed.

mkdir  reset
cd reset
 git init
 touch README.md
 git add .
 git commit -m 'Initial commit'
 git remote add origin [email protected]:XXX/xxx.git
 git push --force --set-upstream origin master

When you say "first push" do you mean the very first push to the branch ever? As in there was no code in it at all before you pushed to it. If that's the case…

If you wanted to push a local branch foo to a remote branch for the first time, you would do this:

git push origin foo:foo

In order to delete remote branch foo, you tell git to push "nothing" to it:

git push origin :foo

Now you can start over with it however you like.

To be honest I'm not sure what actually remains physically on the server -- but in terms of completely resetting branch history, this will work.

(fwiw, I think this interface is pretty ridiculous)


Best way to empty the GitHub repository.

Step 1: Create new branch. git checkout -b master1

Step 2: Add your data into its.

git add .

git commit -m "Initial commit"

git push origin master1

Step 3: Now remove old master branch.

git push origin --delete <your_branch>