-
-
Save subfuzion/1128192 to your computer and use it in GitHub Desktop.
git reset --hard | |
git clean -f -d | |
Description: | |
============ | |
Git Tips: Remove untracked files and directories from the working | |
tree when switching branches or checking out different commits. | |
Explanation: | |
============ | |
When switching branches or checking out another set of commits, | |
you might want to only have the files and directories that are | |
a part of that actual version. The commands shown above will | |
accomplish this. | |
Be warned that any untracked files will be deleted, along with | |
changes to tracked files. The two commands together reset the | |
index and working tree, so ensure that any changes you don't want | |
to lose were either committed to another branch or otherwise | |
backed up somehow. | |
Reference: | |
========== | |
git reset --hard | |
http://www.kernel.org/pub/software/scm/git/docs/git-reset.html | |
Resets the index and working tree. Any changes to tracked files | |
in the working tree since <commit> are discarded. | |
git clean -f -d | |
http://www.kernel.org/pub/software/scm/git/docs/v1.7.6/git-clean.html | |
-d | |
Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory. | |
-f | |
--force | |
If the git configuration variable clean.requireForce is not set to false, git clean will refuse to run unless given -f or -n. |
what is the difference between git checkout . and git clean -df
@Young-Je, git checkout will leave untracked files alone, they will be shown as 'untrack' in your new branch, if you run git clean -df, these untracked files/folder will be DELETED from your file system!! If you switch back to the previous branch, they are gone for good.
Hope my answer helps.
just be careful or you will lost a lot and possibly no way to get it back. Make a backup before you do something like this.
Cheers. Worked as decribed.
Thanks for the pointer! My 'lazy web' searches have brought me back here a few times, so I hope you'll forgive my scribbling this Note to Self here for the next time. As @alexmgillis mentioned, it's impossible to get back uncommitted changes if you run these command by mistake, so I recommend the following alias:
[alias]
clobber = !git stash && git reset --hard && git clean -fd
Stashing the working copy state before running git reset --hard
is nearly always a good idea, since it adds any uncommitted changes to the reflog so you can retrieve them later if you regret deleting them. Here's a short demonstration:
$ vim README.md
$ # make some edits
$ git clobber
Saved working directory and index state WIP on (no branch): 93bc2e2072 Merge pull request #18928 from tensorflow/release-patch-4-1
HEAD is now at 93bc2e2072 Merge pull request #18928 from tensorflow/release-patch-4-1
$ git status
HEAD detached at v1.8.0
nothing to commit, working tree clean
$ git diff stash@{0}
diff --git a/README.md b/README.md
index 5efde96d7b..99f4a253d9 100644
--- a/README.md
+++ b/README.md
@@ -96,6 +96,3 @@ Learn more about the TensorFlow community at the [community page of tensorflow.o
## License
[Apache License 2.0](LICENSE)
-
-Very important changes that I accidentally obliterated. But it's okay! I
-stashed them first, so they can be resurrected...
This is great. I'm always resetting and cleaning
Thanks. Really Very Helpful.