I'm trying to undo all changes since my last commit. I tried git reset --hard
and git reset --hard HEAD
after viewing this post. I responds with head is now at 18c3773... but when I look at my local source all the files are still there. What am I missing?
This question is related to
git
command-line
undo
git-reset
Another option to undo changes that weren't staged for commit is to run:
git restore <file>
To discard changes in the working directory.
git restore [filename_path]
For example I need to discard my last changes in index.html
file:
git restore /usr/myPC/folder/index.html
What I do is
git add . (adding everything)
git stash
git stash drop
One liner: git add . && git stash && git stash drop
0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed
0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"
0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD
2->1: git reset
1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD
git reset && git checkout . && git clean -fdx
For those who reached here searching if they could undo git clean -f -d
, by which a file created in eclipse was deleted,
You can do the same from the UI using "restore from local history" for ref:Restore from local history
If you wish to "undo" all uncommitted changes simply run:
git stash
git stash drop
If you have any untracked files (check by running git status
), these may be removed by running:
git clean -fdx
git stash
creates a new stash which will become stash@{0}. If you wish to check first you can run git stash list
to see a list of your stashes. It will look something like:
stash@{0}: WIP on rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes
Each stash is named after the previous commit messsage.
Adding this answer because the previous answers permanently delete your changes
git stash -u
Explanation: Stash local changes including untracked changes (-u
flag). The command saves your local modifications away and reverts the working directory to match the HEAD commit.
git stash pop
Explanation: The command will reapply the changes to the top of the current working tree state.
git stash drop
Explanation: The command will permanently remove the stashed entry
there is also git stash
- which "stashes" your local changes and can be reapplied at a later time or dropped if is no longer required
more info on stashing
Source: Stackoverflow.com