Ответ 1
Они делают две разные вещи. Допустим, вы выполнили GIT PULL
а затем начали редактировать некоторые файлы и, вероятно, добавили и зафиксировали эти изменения, чтобы они были отправлены... а затем по какой-то причине вы решили просто отменить все изменения, внесенные в данные файлы, и вернуться в более раннее состояние. в случае, если вы будете делать
$ git reflog
... snip ...
cf42fa2... [email protected]{0}: commit: fixed misc bugs
~
~
cf42fa2... [email protected]{84}: commit: fixed params for .....
73b9363... [email protected]{85}: commit: Don't symlink to themes on deployment.
547cc1b... [email protected]{86}: commit: Deploy to effectif.com web server.
1dc3298... [email protected]{87}: commit: Updated the theme.
18c3f51... [email protected]{88}: commit: Verify with Google webmaster tools.
26fbb9c... [email protected]{89}: checkout: moving to effectif
Выберите коммит, к которому вы хотите откатиться, вот так:
git reset --hard 73b9363
после сброса HEAD все изменения/промежуточные файлы исчезнут.
Что касается мерзавца чистым. Вот как это описывает git-scm.com.
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.
Подробнее о сбросе против чистоты и их --options
lnydex99uhc:~ user$ git reset -h
usage: git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
or: git reset [-q] <tree-ish> [--] <paths>...
or: git reset --patch [<tree-ish>] [--] [<paths>...]
-q, --quiet be quiet, only report errors
--mixed reset HEAD and index
--soft reset only HEAD
--hard reset HEAD, index and working tree
--merge reset HEAD, index and working tree
--keep reset HEAD but keep local changes
-p, --patch select hunks interactively
В.С.
lnydex99uhc:~ user$ git clean -h
usage: git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>...
-q, --quiet do not print names of files removed
-n, --dry-run dry run
-f, --force force
-i, --interactive interactive cleaning
-d remove whole directories
-e, --exclude <pattern>
add <pattern> to ignore rules
-x remove ignored files, too
-X remove only ignored files