Задать вопрос
@zlodiak

В чём разница между git reset и git reset --soft?

У меня есть ветка 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. На мой взгляд эти команды делают одно и то же. А именно Откатывают историю коммитов и при этом не изменяют состояние рабочего каталога.

Объясните пожалуйста разницу.
  • Вопрос задан
  • 527 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
VladimirAndreev
@VladimirAndreev
php web dev
--soft сбрасывает коммит так, будто git add на файлы сделан
--mixed сбрасывает коммит так, будто не было git add на эти файлы, это по-умолчанию.
--hard сбрасывает коммит и удаляет изменеия. Но, коммит доступен по своему хэшу, если он не удален gc
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы