проблема в том, что у меня исходник новой версии, а мне нужно вернуться на старую версию. я попытался написать git revert новаяверсия..стараяверсия, но получил очевидную ошибку, что у меня нет коммитов для отмены. можно-ли как-то вернуться к старой версии посредством отмены коммитов из добавленного мной репозитория?
я хочу отменить коммиты из удалëнного репо, а не из локального
KiGamji, не надо всё мешать в одну кучу. Преврати удалённую репу в локальную (git remote add, git fetch), вычекни полученную ветку, выполни действия, сделай пуш обратно. Ну или продолжай работать с изменённой локально веткой если изменения в удалённой репе не требуются.
Сергей КузнецовВасилий Банниковjcmvbkbc, моя ошибка в том, что я лишь косвенно поведал о своей проблеме.
У меня есть исходник ядра Linux под мой телефон. Версия исходника - 4.14.290. я поднял еë до 4.14.299 следующими командами:
и так до 299, т. к. мне удобнее поднимать по .001 версии.
Но можно-ли вернуться, к примеру, на v4.14.289? На сайте есть все коммиты для всех версий, для 4.14 это от 4.14-rc1 с 4.14 до 4.14.299. Мне нужно как-бы вычесть эти коммиты из моего исходника, чтобы откатиться назад, но с показом ошибок, т. к. мой исходник отличается от исходника оригинального ядра Linux.
Буду признателен за любую помощь.
Василий Банников, эти коммиты находятся на сайте git.kernel.org, я не могу просто так их откатить, если мой исходник уже выложен с этими коммитами, но их не видно. грубо говоря, исходник выложен без единого коммита.
KiGamji, проще всего это делать навешивая теги на свою ветку после каждого обновления минорной версии. Например
git cherry-pick v4.14.290..v4.14.291 ; git tag v4.19.291-my
, тогда возврат к конкретной версии -- это например git checkout vX.YY.ZZZ-my или git rese --hard vX.YY.ZZZ-my или git revert vX.YY.ZZZ-my..HEAD, по обстоятельствам.
Навешивать теги можно и пост фактум, просто прийдётся искать коммиты которым они соответствуют через git grep или git log.
KiGamji, я кажется понял. Ну да, git revert выглядит частично разумно в этой ситуации. "Частично" потому что при наличии в ветке вендора изменений отсутствующих в стабильной ветке они не будут отменены. Они могут зависеть от отменённых изменений и могут не работать без них. Более правильным выглядит откат к конкретному коммиту в ветке вендора, с отменой всех изменений -- как взятых из стабильной ветки так и внесённых вендором.
Что-то не очень понятно что вы хотите сделать.
Если надо просто переключиться в старое состояние, то сбросьте ветку до этого состояния. git reset --hard адрес_старого_состояния
Тут нет нужды отменять какие-то коммиты.