LINUX.ORG.RU

Откат в git и история

 


0

1

помогите пожалуйста разобраться

я накоммиттил лишнего:

kalinin@kalinin ~/rails/depot $ git hist
* 129bc8f 2015-06-01 | fff2 (HEAD, master) [Your Name]
* c399c90 2015-06-01 | fff [Your Name]
* 06cc3ad 2015-06-01 | ajax ok [Your Name]
* 853797b 2015-06-01 | before ajax [Your Name]
* 58def0f 2015-06-01 | cart partial [Your Name]
* c1d5f57 2015-05-30 | cart full ok [Your Name]
* e726c7d 2015-05-30 | before q [Your Name]
* b91746e 2015-05-30 | cart ok [Your Name]
* 6d5b664 2015-05-30 | tests ok [Your Name]
* 3156c52 2015-05-30 | layout styles add ok [Your Name]
* 53cd558 2015-05-30 | validation ok [Your Name]
* 371aa66 2015-05-30 | tests ok [Your Name]
* fbe65a4 2015-05-30 | scaffold ok products [Your Name]

хотел бы откатиться до 06cc3ad получилось при помощи:

git reset --hard HEAD 06cc3ad

но проблема в том, что я не вижу в истории теперь c399c90 и 129bc8f:

kalinin@kalinin ~/rails/depot $ git hist --all
* 06cc3ad 2015-06-01 | ajax ok (HEAD, master) [Your Name]
* 853797b 2015-06-01 | before ajax [Your Name]
* 58def0f 2015-06-01 | cart partial [Your Name]
* c1d5f57 2015-05-30 | cart full ok [Your Name]
* e726c7d 2015-05-30 | before q [Your Name]
* b91746e 2015-05-30 | cart ok [Your Name]
* 6d5b664 2015-05-30 | tests ok [Your Name]
* 3156c52 2015-05-30 | layout styles add ok [Your Name]
* 53cd558 2015-05-30 | validation ok [Your Name]
* 371aa66 2015-05-30 | tests ok [Your Name]
* fbe65a4 2015-05-30 | scaffold ok products [Your Name]

а хотелось бы увидеть полную историю


А что ты собирался сделать? Удалить два верхних коммита или посмотреть код, который был 2 коммита назад, а потом вернуться обратно?

Если удалить, то действительно что-то вроде git reset --hard HEAD~2 помогает, но рискуешь больше эти коммиты не увидеть после следующего запуска сборщика мусора (git gc).

Если посмотреть, что было 2 коммита назад, то используй команду checkout. Например, если ты на ветке master, то делаешь «git checkout master~2», чтобы перейти на 2 коммита назад от ветки master. Когда насмотрелся, можешь вернуться обратно: «git checkout master».

aspotashev ★★★
()

Вы немного неверно понимаете как работает гит. Если вы хотите получить какую-то версию, то надо юзать checkout

git checkout ...

и вернуться по git checkout master

Ваша команда удаляет два верхних комита, и сбрасывает текущий бранч до того что вы попросите (на самом деле не до конца -> см. reflog и читайте про сборку мусора в гит).

Если вы хотите откатиться, но эти лишне комиты оставить, то делайте так.

Создавайте новый бранч, указывающий на 06cc3ad, потом возвращайтесь на мастер и делайте гит ресет.

Сейчас же смотрите на git reflog и возвращайте бранч через git reset обратно в нужный комит.

Dudraug ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.