Reputation: 354
Basically I had a codebase on my local machine, I ran:
git init
git add .
At this point, I realized I wanted to add a .gitignore file.
So I thought I needed to unstage commits, and in an amateur move, executed the following command
git reset --hard
Now my entire code base is gone...
Is it possible to undo this!?
Upvotes: 3
Views: 170
Reputation: 51780
git add .
has added the content of your files into git ; unfortunately, it hasn't created a 'directory' structure which lists your files with their names.
What you can do :
run
git fsck --full --unreachable --no-reflog | grep blob > blobs.txt
# the content of blobs.txt will look like :
unreachable blob 08bf360988858a012dab3af4e0b0ea5f370a2ae8
unreachable blob 21bf7ea93f9f9cc2b3ecbed0e5ed4fa45c75eb89
unreachable blob 08c12ef37075732cf4645269ab5687ba6ba68943
...
For each of these blobs, you can dump the content to disk :
cat blobs.txt | awk '{ print $3 }' | while read blobid; do
git show $blobid > $blobid.txt
done
You will now have a list of files :
08bf360988858a012dab3af4e0b0ea5f370a2ae8.txt
21bf7ea93f9f9cc2b3ecbed0e5ed4fa45c75eb89.txt
08c12ef37075732cf4645269ab5687ba6ba68943.txt
...
The good news is : all the files that were present in the initial git add .
should be represented in there.
The bad news is :
node_modules/
folder, so you would have the code for all the js libs you added ...) ,src/my_controller.js
, src/model/my_model.js
...One first filter you could apply, to try to take the node_modules/
files away is :
grep -e some_package_I_remember
),package.json
(you may also find the lockfile), and run npm install
or yarn install
node_modules/
folder, which looks a lot like the previous one you hadnode_modules/
folder, and create a commit,git fsck ... > blobs.txt
above, you should have a list of what wasn't under node_modules
...Upvotes: 5