Git status fatal: bad object HEAD

First of all, note that using git itself is not enough to keep data safe. You still need to back it up and have a remote repository in cases of corruption.

There are some reasons when a git repository becomes badly damage and when you do:

git status

you will see :

fatal: bad object HEAD

Reason:

More likely a disk error or an unclean PC or Laptop shutdown or disconnect suddenly and unsafely a hard drive from laptop could have left the repository in this state.

The consequence problem is that the ~/main_repo/.git directory of your repository is damaged.

There are several ways and methods to fix it but if you have a backup in GitHub or other online git repositories or another remote server, you can fix such errors easily.

Solution:

I assume you have a backup in github like:

https://github.com/your_account/backup_repo

So make a temp directory and then clone the backup repository in it.

Like:

cd ~git clone https://github.com/your_account/backup_repo.git

Note: Be careful for cloning the repository with suffix .git like above. If you put backup_repo instead of backup_repo.git then you can not find .git directory inside what you have cloned.

Then replace the broken .git folder with the one from the clone by mv or cp -r commands.

Warning:

If you delete the damaged .git directory by:

rm -rf ~/main_repo/.git

and try to copy the clone (backup) ~/backup_repo/.git directory to ~/main_repo/ by :

cp -r ~/backup_repo/.git ~/main_repo/

you will lose all the things that are not in your working directory (local branches, stash, etc).

So first of all just use cp -r or mv try to fix the problem.

mv ~/backup_repo/.git ~/repo/orcp -r ~/backup_repo/.git ~/repo/

Then

git status

You will see the stage becomes normal!

If you want to run all the git commands just in one command read this.

Posting daily about Python, Laravel, Livewire, Nuclear Physicist PhD