Подтвердить что ты не робот

Разница между git reset --hard и git clean

Привет, мне интересно узнать разницу между этими двумя командами. Когда они вводят здесь: https://www.atlassian.com/git/tutorials/undoing-changes

Похоже, что git reset --hard также устанавливает как стажировку, так и рабочий каталог в соответствии с последней фиксацией, но в конце говорят, что git reset --hard не изменяет текущий рабочий каталог. Так что я очень смущен здесь, может кто-нибудь прояснить это?

4b9b3361

Ответ 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