Как я могу восстановить только измененные файлы на git checkout? - PullRequest
8 голосов
/ 14 сентября 2011

Скажем, у меня есть каталог, содержащий сотни файлов. Я модифицирую некоторые из них, но потом понимаю, что мои изменения плохие. Если я сделаю:

git checkout whole_folder

Затем все проверяется снова, и я должен все перекомпилировать. Есть ли способ сделать так, чтобы оформление касалось только измененных файлов, или мне нужно запустить checkout для каждого файла отдельно?

Ответы [ 3 ]

16 голосов
/ 14 сентября 2011

Попробуйте:

$ git checkout `git ls-files -m`

-m перечисляет только измененные файлы.

3 голосов
/ 21 августа 2012

Но

git checkout -- $(git ls-files -m)

также проверяет удаленные файлы.

Если вы хотите оформить заказ только для измененных файлов, эта работа для меня:

git checkout -- $(git status -uno | grep --colour=never '#' | awk '{ print $2 $3 }' | grep --colour=never ^modified: | cut -c10-)
2 голосов
/ 14 сентября 2011

То, что вы делаете, правильно, но вы можете добавить двусмысленность -- на тот случай, если у вас есть имя каталога, совпадающее с именем ветви, т.е.

git checkout -- whole_folder

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

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