Как я могу избавиться от всех изменений во всех файлах моего репозитория?

Скажем, я в ветке и внес некоторые изменения. git status возвращает набор файлов в поле «Изменения, не предназначенные для фиксации», и я заметил, что хотел бы избавиться от всех этих изменений во всех файлах. Как я могу сделать это с помощью одной команды?

Я знаю, что могу сделать следующее, чтобы получить только один файл:

git checkout -- <file>

Я заметил, что только git checkout -- возвращает список всех незафиксированных файлов. Однако я не могу найти способ проверить их все, например git checkout --all.

Я проверил man git checkout и ничего не нашел. Также я видел Git: оформить все файлы, кроме одного, попытался git checkout ., но тоже не работал.

Придется ли мне делать это программно, перебирая вывод git checkout --?

159
fedorqui 'SO stop harming' 12 Мар 2015 в 13:54

3 ответа

Лучший ответ

Если вы находитесь в корне своего рабочего каталога, вы можете сделать git checkout -- ., чтобы извлечь все файлы в текущем HEAD и заменить ваши локальные файлы.

Вы также можете выполнить git reset --hard для сброса рабочего каталога и замены всех изменений (включая индекс).

210
poke 12 Мар 2015 в 10:56

Если вы хотите проверить все файлы "где угодно"

git checkout -- $(git rev-parse --show-toplevel)
0
RayKim 14 Янв 2021 в 02:38

Другой способ, который я нашел полезным:

git checkout <wildcard> 

Примере:

git checkout *.html

В более общем смысле:

git checkout <branch> <filename/wildcard>
7
fedorqui 'SO stop harming' 14 Мар 2019 в 08:18