physshyp
physshyp

Reputation: 208

Reverting the last action on git?

I am just new to git and I pushed a file to the repository but it just overwrites and deleted every work on our groups' repository, how do I undo this. as fast as possible without anyone noticing.

When I try git revert it gives bad object.

step by step I used

clone <repsurl>

in the git bash than I add somefile to local directory and used the command

git add <somfile>

git commit -m "somecomment"

and finnaly

git push

I think my mistake was not using

git add .

any way at the end Only my files were in the rep.

Upvotes: 3

Views: 4815

Answers (1)

mfnx
mfnx

Reputation: 3018

When you do git push, you don't overwrite files, you just add a version of the files. A picture of that version is a commit which is identified by a commit hash.

I highly recommend you read https://git-scm.com/docs. It's short, and it will answer a lot of questions for you.

So, to answer your question: how can I undo this? The question should be: how can I get the previous files back? As always, in git, there are many ways to achieve something. I won't post a git tutorial here, but I'll try to provide you with some basic commands which would allow you to do what you need. However, if you do not understand them fully, I insist, you should read the docs.

I will assume your working area is clean, that is, everything has been committed and pushed to your remote. Local and remote repositories are fully synced.

When executing git log, you can see all the commits you have done on your branch (and parent branches). Some useful variant: git push -10 --oneline. This shows the last 10 commits in a short version (one line per commit). For each commit, you will see the commit hash (the identifier of your commit). To check out to that commit, you can do:

git checkout <commit_hash>

After that, the version of your files are those corresponding to that commit. But, note that you are not on a branch anymore. If you want to stay on your branch, but reset your files to the version of a given commit, you can do:

git reset --hard <commit_hash>

Sometimes, it is useful to do a soft reset:

git reset --soft <commit_hash>

This resets your last commit to the one identified by <commit_hash>, but does not change the version of your files. Instead, those changes are in the staged area.

There are also some useful variants like:

git reset --soft HEAD~1

This last command does a soft reset to your previous commit (the commit before the one HEAD is pointing to).

Upvotes: 3

Related Questions