git checkout все файлы

127

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

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

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

git checkout -- <file>

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

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

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

fedorqui 'ТАК, хватит вредить'
источник

Ответы:

194

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

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

совать
источник
эквивалентны ли эти два параметра (если мы сбросим до HEAD)?
lucidbrot
10
Нет, есть определенные отличия. Например git checkout -- ., сбросит только изменения состояния индекса. Итак, если вы уже добавили файлы в индекс, он будет сброшен до этого. С другой стороны git reset --hard, также будет отброшен индекс, поэтому, например, если у вас есть неотслеживаемые файлы, добавленные в индекс (чтобы начать их отслеживание), они также будут удалены. git checkoutтакже позволяет частично восстановить рабочий каталог, передав более конкретный путь, что может быть очень полезно.
совать
4
@poke Hi Poke, я уверен, что git checkout -. не работает. Я пробовал это для нескольких неустановленных изменений.
Аман
2
другие команды , чтобы достичь того же результата: git checkout --force,git reset --hard
Тьяллинг
3

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

git checkout <wildcard> 

Пример:

git checkout *.html

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

git checkout <branch> <filename/wildcard>
Singhak
источник
1
Если в вашей оболочке включена подстановка, а в рабочем каталоге есть неотслеживаемые файлы, тогда это не удастся, если вы не уберете звездочку, например git checkout \*или git checkout '*'.
Джош Кули,