Как я могу удалить промежуточные файлы, используя git? - PullRequest
3 голосов
/ 20 мая 2019

У меня есть куча поэтапных изменений и куча неустановленных изменений.Есть ли команда git, чтобы полностью отклонить все мои поэтапные изменения и в то же время сохранить мои не поэтапные изменения как есть?

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

Ответы [ 3 ]

3 голосов
/ 20 мая 2019

Предполагая, что поэтапные и не поэтапные изменения не являются конфликтующими,

Вот как вы можете добиться этого:

git stash save --keep-index
git reset --hard
git stash pop

Первая команда [stash with --keep-index] будет сохранять только неустановленные файлы,Второй [reset --hard] избавит от всех существующих изменений (которые теперь включают только промежуточные файлы).Третий [stash pop] удаляет прежние неотмеченные файлы.

Альтернативный подход может быть следующим: зафиксировать промежуточные файлы, спрятать оставшиеся изменения, удалить верхний коммит, вытолкнуть спрятанные изменения.Как ниже:

git commit -m "temp commit"
git stash
git reset --hard HEAD~1
git stash pop
1 голос
/ 20 мая 2019

Самое простое решение - которое не включает создание комманды tmp (git stash фактически создает коммит tmp):

Сначала создайте патч между Index и HEAD commit, сохраните в файл tmp:

git diff --cached -R > ~/tmp.patch

Обратите внимание на опцию -R для изменения направления дифференциала.

Во-вторых, сбросьте Индекс :

git reset

Наконец, примените патч к Working Dir :

git apply ~/tmp.patch
0 голосов
/ 20 мая 2019

Чтобы удалить все файлы (см. Комментарии: не то, что хотел OP) просто

git reset

(HEAD подразумевается, если ссылка не указана)

Ваши локальные изменения сохраняются, но индекс (область подготовки) очищается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...