Не удалось выполнить git reset до предыдущей фиксации в travis

При создании моего кода в travis в случае сбоя я хочу сбросить HEAD на предыдущий коммит и выполнить какое-то действие. Проблема в том, что когда в travis.yml я делаю:

after_failure:
- git reset --hard HEAD@{1}

Он всегда указывает на последний коммит.

Если я делаю git reset --hard HEAD 04d24f1, я получаю fatal: Cannot do hard reset with paths., и при печати хэшей по какой-то причине отображается буква m рядом с коммитом, который я пытался сбросить.

1b8bc73 (HEAD, origin/feature/RXM-73-create-aws-rollback-script, feature/RXM-73-create-aws-rollback-script) Fail 7
* 04d24f1m Pass 7  << letter m added
* 8c6a51e Fail 6
* 37e3e38 Pass 6

Если я распечатаю историю коммитов по git reflog -4, то я получу только 2 коммита, и у них обоих одинаковый хэш

1b8bc73 (HEAD, origin/feature/RXM-73-create-aws-rollback-script, feature/RXM-73-create-aws-rollback-script) HEAD@{0}: checkout: moving from feature/RXM-73-create-aws-rollback-script to 1b8bc736d2297be68e18d13de74dde3f75694072
1b8bc73 (HEAD, origin/feature/RXM-73-create-aws-rollback-script, feature/RXM-73-create-aws-rollback-script) HEAD@{1}: clone: from https://github.com/MaxRepo/terraform-rx-manager-service.git

Если я печатаю историю коммитов по git log --oneline --graph --decorate, то она отображает историю так:

* 1b8bc73 (HEAD, origin/feature/RXM-73-create-aws-rollback-script, feature/RXM-73-create-aws-rollback-script) Fail 7
* 04d24f1m Pass 7
* 8c6a51e Fail 6
* 37e3e38 Pass 6
* 4ddfd89 Pass 5

Дополнительная информация. В начале это то, что делает Трэвис перед запуском команд:

0.74s$ git clone --depth=50 --branch=feature/RXM-73-create-aws-rollback-script https://github.com/MaxRepo/terraform-rx-manager-service.git MaxRepo/terraform-rx-manager-service
Cloning into 'MaxRepo/terraform-rx-manager-service'...
remote: Enumerating objects: 118, done.
remote: Counting objects: 100% (118/118), done.
remote: Compressing objects: 100% (91/91), done.
remote: Total 175 (delta 52), reused 61 (delta 22), pack-reused 57
Receiving objects: 100% (175/175), 32.98 KiB | 8.24 MiB/s, done.
Resolving deltas: 100% (66/66), done.
$ cd MaxRepo/terraform-rx-manager-service
$ git checkout -qf 1b8bc736d2297be68e18d13de74dde3f75694072

Знаете, почему я не могу get reset строить Трэвиса?


person Maxim Vershinin    schedule 18.01.2019    source источник
comment
А как насчет git reset --hard HEAD~1?   -  person Sajib Khan    schedule 18.01.2019
comment
@SajibKhan большое спасибо за предложение. Это сработало, ваш ответ правильный. Я думал, что git reset --hard HEAD@{1} сделает то же самое. Нужно исследовать, в чем разница между ними.   -  person Maxim Vershinin    schedule 18.01.2019
comment
Проблема с git reset --hard HEAD 04d24f1 заключается в том, что в списке два коммита: HEAD — один, 04d24f1 — другой. Вам нужен либо sha1, например 04d24f1, либо что-то основанное на HEAD, но не то и другое. Так что git reset --hard 04d24f1 тоже должно было сработать.   -  person joanis    schedule 18.01.2019
comment
stackoverflow.com/questions/26785118/   -  person phd    schedule 18.01.2019


Ответы (1)


Как уже указал Саджиб Хан, вы хотите

git reset --hard HEAD~1

а не git reset --hard HEAD@{1}.


здесь есть полезная информация, объясняющая разницу. *Короче говоря, HEAD, в вашем случае никогда не указывало ни на что другое, кроме (HEAD, origin/feature/RXM-73-create-aws-rollback-script, feature/RXM-73-create-aws-rollback-script), а @ означает, где голова была *.

Вы можете изучить список возможных значений @{#}, просмотрев

git reflog

чтобы убедиться, что HEAD не указывает куда-то еще.

person 9301293    schedule 18.01.2019