2014-04-25 3 views
1

Я часто добавляю код отладки во время разработки, поэтому мне нужно удалить эти изменения позже.Отменить локальные изменения в интерактивном режиме

В настоящее время я проверяю git diff и удаляю изменения вручную или просто набираю git checkout -- myfilename, если я хотел бы отменить весь файл.

Мне нравится интерактивная функция патча (git add -i). Есть ли инструмент или команда в git, которая может отменять изменения, такие как git add -i?

Другими словами: Я хотел бы интерактивно проверять файлы и hunks из индекса.

ответ

2

Что вы ищете Я думаю, что это git reset --patch или git reset -p

От the docs:

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

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

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

и о git add -pit says

-p

интерактивно выбрать ломти пластыря между индексом и работы дерева и добавить их в индекс. Это дает пользователю возможность просмотреть разницу перед добавлением измененного содержимого в индекс.

Это эффективно запускает add -interactive, но обходит первоначальное командное меню и непосредственно переходит к подкоманде патча. Подробнее см. «Интерактивный режим».

Таким образом, в основном с помощью git reset -p вы можете выбрать, что вы сбросили.


Edit:

Как git checkout Manual Page упоминает:

-p

--patch

интерактивно выбрать ломти в разнице между (или индекс, если не указано) и рабочее дерево. Затем выбранные ханки применяются в обратном направлении к рабочему дереву (и если a указан, индекс).

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

Так команда, которую вы ищете

$git checkout -p 
+1

о хороших команд ТНХ, но это не то, что я искал. 'git reset -p' позволяет мне не выполнять поэтапные изменения. Но мне нравится ** отменять ** неустановленные изменения, такие как 'git checkout - file' do – nickel715

+1

@ nickel715 Думаю, я неправильно понял :-) см. Мое редактирование для нового ответа –

+0

omg спасибо, thats so awesome, отлично работает. Вы знаете, есть ли возможность добавлять целые файлы в интерактивном режиме? как в git add -i, а затем в режиме обновления? – nickel715

Смежные вопросы