For all unstaged files in current working directory use:
git checkout -- .
For a specific file use:
git checkout -- path/to/file/to/revert
--
here to remove ambiguity (this is known as argument disambiguation).
For Git 2.23 onwards, one may want to use the more specific
git restore .
resp.
git restore path/to/file/to/revert
that together with git switch
replaces the overloaded git checkout
(see here), and thus removes the argument disambiguation.
git-clean - Remove untracked files from the working tree
Synopsis
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…
Description
Cleans the working tree by recursively removing files that are not under version control, starting from the current directory.
Normally, only files unknown to Git are removed, but if the -x
option is specified, ignored files are also removed. This can, for example, be useful to remove all build products.
If any optional <path>...
arguments are given, only those paths are affected.
Step 1 is to show what will be deleted by using the -n
option:
# Print out the list of files and directories which will be removed (dry run)
git clean -n -d
Clean Step - beware: this will delete files:
# Delete the files from the repository
git clean -f
- To remove directories, run
git clean -f -d
or git clean -fd
- To remove ignored files, run
git clean -f -X
or git clean -fX
- To remove ignored and non-ignored files, run
git clean -f -x
or git clean -fx
Note the case difference on the X
for the two latter commands.
If clean.requireForce
is set to "true" (the default) in your configuration, one needs to specify -f
otherwise nothing will actually happen.
Again see the git-clean
docs for more information.
Options
-f
, --force
If the Git configuration variable clean.requireForce is not set to
false, git clean will refuse to run unless given -f
, -n
or -i
.
-x
Don’t use the standard ignore rules read from .gitignore (per
directory) and $GIT_DIR/info/exclude
, but do still use the ignore
rules given with -e
options. This allows removing all untracked files,
including build products. This can be used (possibly in conjunction
with git reset) to create a pristine working directory to test a clean
build.
-X
Remove only files ignored by Git. This may be useful to rebuild
everything from scratch, but keep manually created files.
-n
, --dry-run
Don’t actually remove anything, just show what would be done.
-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.
Best Answer
Edit (2 more years later: October 2014)
Johannes Schindelin just explained (Oct. 2014) that msysgit is phased out:
Edit (3 years later: April 2012)
MsysGit (now on GitHub) is the way to go if you want a light-weight fast start in Git world: unzip the archive, launch
git-cmd.bat
orgit-bash.bat
and you are done.Its latest release (1.7.10, April 2012) now includes support for UTF-8, also included in GitExtension. Don't forget to set your
autocrlf
to false though.If you are really missing all the other unix commands not packages with msysgit, simply download a release of GoW (Gnu on Windows), aptly named "The lightweight alternative to Cygwin".
I mean: 130 unix commands...
Cygwin should be a backup solution only for certain cases, like the transfer speed of large Git repositories, as mentioned below by incrementor in his answer.
June 2012: if you want to interact with GitHub, you now have http://windows.github.com (see also "Designing GitHub for Windows").
It not only will configure the ssh keys for you (and add the generated public key to your GitHub profile), but it will also install, for all git operations, a... MsysGit.
Original answer (April 2009)
I have no problem with the latest version of MsysGit:
I use the option 2, which means I only add the git\bin directory to the PATH environment variable, but without overriding some built-in windows tools.
I managed to defined external tools like Notepad++ and WinMerge (or DiffMerge)
I did run successfully scripts like svn2git because, from MsysGit1.6.2+, it does include the '
git svn
' command.And finally I look forward to MsysGit1.6.2.3 for it will include finally '
git filter-branch
' command! (a slow version of filter-branch, but still).For the Unix command, I prefer to install a GnuWin32 coreutils package, and use them only when I need them.
So all in all, I do not use the Cygwin layer, and managed to run Git very well in its Windows-based release MsysGit.