У меня есть ветка master с несколькими коммитами:
* 1f52e4c 2018-02-20 | w3 (HEAD -> master) [zlodiak]
* 19299b6 2018-02-20 | w2 [zlodiak]
* ec499c2 2018-02-20 | w1 [zlodiak]
* fcbc61d 2018-02-20 | q1 [zlodiak]
* aae9725 2018-02-19 | cherry -1 [zlodiak]
* 5e5f31e 2018-02-19 | f [zlodiak]
|\
| * 84611db 2018-02-19 | 5 [zlodiak]
| * 175f012 2018-02-19 | 2 [zlodiak]
* | 9f8fb98 2018-02-19 | 6 [zlodiak]
* | f25a332 2018-02-19 | 3 [zlodiak]
|/
* 408d717 2018-02-19 | 1 [zlodiak]
* 710b3ba 2018-02-19 | 0 [zlodiak]
допустим, я захотел откатиться на несколько коммитов назад и продолжить историю заново с этого коммита. Я деалаю так:
kalinin@lenovo /var/www/html/misc/tag $ git reset ec499c2
Unstaged changes after reset:
M index.html
kalinin@lenovo /var/www/html/misc/tag $ git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short --all
* ec499c2 2018-02-20 | w1 (HEAD -> master) [zlodiak]
* fcbc61d 2018-02-20 | q1 [zlodiak]
* aae9725 2018-02-19 | cherry -1 [zlodiak]
* 5e5f31e 2018-02-19 | f [zlodiak]
|\
| * 84611db 2018-02-19 | 5 [zlodiak]
| * 175f012 2018-02-19 | 2 [zlodiak]
* | 9f8fb98 2018-02-19 | 6 [zlodiak]
* | f25a332 2018-02-19 | 3 [zlodiak]
|/
* 408d717 2018-02-19 | 1 [zlodiak]
* 710b3ba 2018-02-19 | 0 [zlodiak]
В результате несколько коммитов удалились, а рабочий каталог не изменился. То, что произошло меня устраивает.
НО я не понимаю чем команда, которую я использовал(git reset ec499c2) отличается от команды git reset --soft ec499c2. На мой взгляд эти команды делают одно и то же. А именно Откатывают историю коммитов и при этом не изменяют состояние рабочего каталога.
Объясните пожалуйста разницу.