Подтвердить что ты не робот

Обратное Применить фиксацию к рабочей копии

Чтобы исследовать эффект, полученный предыдущим фиксатором, я хочу обратить его в свою рабочую копию и поиграть с кодом.

Мне удалось создать рабочий процесс вокруг создания и применения патча, но задаться вопросом, можно ли это сделать проще.

git checkout -b "tmp-fiddle"
git diff -R -p d9fd2bb^ d9fd2bb > patch_to_examine.patch
# Manually edit the patch a little
git apply patch_to_examine.patch

Обратите внимание, что я не смотрю на git revert или git rebase -i, поскольку они либо вводят новую фиксацию, либо изменяют историю: я просто хочу, чтобы изменения, введенные в d9fd2bb, не были применены к моей текущей рабочей копии.

4b9b3361

Ответ 1

Как насчет git revert -n?

-n
--no-commit

Обычно команда автоматически создает некоторые коммиты с сообщениями журнала фиксации, в которых указано, какие фиксации были отменены. Этот флаг применяет изменения, необходимые для возврата названных коммитов к вашему рабочему дереву и индексу, но не делает коммитов. Кроме того, когда этот параметр используется, ваш индекс не должен совпадать с фиксацией HEAD. Возврат выполняется в соответствии с начальным состоянием вашего индекса.

Это полезно, когда вы возвращаете более одного эффекта коммитов на ваш индекс в строке.

Ответ 2

Еще один способ, который работает, это git show | git apply -R. -R обозначает обратный дифференциал.

Это работает с любыми различиями, поэтому вы можете сделать git diff ... | git apply -R

Или поменять stash git stash show -p [email protected]{0} | git apply -R