Отменить изменения из одного каталога в git - PullRequest
0 голосов
/ 20 февраля 2019

Я не могу найти хорошее соответствие для этого, но должен быть более короткий способ сделать это ... Допустим, у нас есть поддерево проекта, выбрав одно случайное здесь , каклокальный репозиторий, и я хочу вернуться назад к 11 декабря версии 6b6e73b3e77176a8a80ae01a1844914102728acd, то есть отменить шесть (на момент написания) коммитов выше.Читая документы, я знаю, что мог бы сделать:

git revert commit1 commit2 commit3 commit4 commit5 commit6

Но, безусловно, должен быть более простой и более общий способ, такой как, скажем:

git revert HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd \
        src/vs/editor/contrib/codelens

Это дает мне "фатальный":плохая ревизия 'src / vs / editor / contrib / codelens' ".

Конечно, делая:

git checkout 6b6e73b3e77176a8a80ae01a1844914102728acd \
        src/vs/editor/contrib/codelens

Дает мне нужную ревизию для данного каталога, но я бы хотелиметь созданный git журнал возврата для отслеживания и т. д.

1 Ответ

0 голосов
/ 20 февраля 2019

Я экспериментировал и пришел к выводу, что это не очень хорошая идея, но в духе обмена, это то, что я придумал.Сначала, чтобы получить список версий для возврата, я сделал:

git log --first-parent --no-merges --pretty=format:"%h" \
                  HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .

Итак, чтобы передать это в git revert, я сделал:

git revert --no-commit $(git log --first-parent --no-merges --pretty=format:"%h" \
                  HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .)

Однако, в моем собственном репозиториивсе стало беспорядочно, и было много конфликтов слияния, поэтому я просто сдался и сделал:

git revert --abort
git checkout 6b6e73b3e77176a8a80ae01a1844914102728acd \
        src/vs/editor/contrib/codelens

Затем вручную добавил результаты:

git log --first-parent --no-merges --oneline \
                  HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .

К сообщению фиксации.

...