2013-06-13 6 views
1

Прежде чем совершить сделку, я вижу с git diff, что я внес изменения, которые я бы предпочел не сделать. Есть ли способ вернуть это единственное изменение?Отменить одно изменение из diff

Я полагаю, что я мог бы использовать git add -p, чтобы зафиксировать изменения, которые я намеревался сделать, а затем мастер проверки. Есть ли лучший способ, желательно способ, который не требует от меня совершения?

Это с Git 1.7.10.4 на Kubuntu Linux 12.10. Благодаря!

ответ

4

git reset --patch (или git reset -p) делает то, что вы хотите.

Соответствующий бит documentation:

сброса мерзавца (--patch | -p) [] [-] [...]

интерактивно выбрать скряга в разнице между индексом и (по умолчанию HEAD). Выбранные куски применяются в обратном порядке к индексу.

Это означает, что git reset -p является противоположностью git add -p, т. Е. Вы можете использовать его для выборочного сброса hunks. См. Раздел «Интерактивный режим» git-add (1), чтобы узнать, как управлять режимом -patch.

Обратите внимание, что git reset (применяется по дорожкам) не соответствует git add — на последних этапах файлы или куски в то время как бывшие unstages их, и так git reset поддерживает --patch вариант так же, как git add делает.

Вам также может быть интересно узнать о git checkout --patch (или git checkout -p).

0

У меня нет серебряной пули для отправки, но когда у меня есть такой прецедент, я иду с git gui. Я просто индексирую все изменения, которые мне нужны, и возвращаю нежелательные изменения.

То же самое, что и у git add -p, но git gui делает операцию действительно опрятной.

1

git checkout также есть -p опция который, в основном, такой же, как -p в git add, но в обратном порядке.

Вобще:

git checkout -p <path> 

(или без path, если вы хотите)

Как с git add -p вы выбираете, какие изменения сцены, здесь можно выбрать, какие изменения, чтобы вернуться.

+0

Не совсем так: 'git checkout -p' обновляет файлы в дереве работ, не касаясь индекса. – kostix

+1

@ kostix Да, именно об этом спрашивал ОП. – kirelagin

+0

Спасибо, это тоже хорошо знать. – dotancohen