git reset --hard HEAD оставляет неотслеживаемыми файлы - PullRequest
507 голосов
/ 01 декабря 2010

Когда я запускаю git reset --hard HEAD, он должен восстановить первоначальную версию того, что вы вытащили, насколько я понимаю.К сожалению, он оставляет файлы без дела, так как git status показывает большой список неотслеживаемых файлов.

Как вы говорите git "Просто верните его ТОЧНО, что было в последнем извлечении, больше ничего, ничегоменьше "?

Ответы [ 6 ]

790 голосов
/ 01 декабря 2010

Вы должны использовать git clean -f -d, чтобы избавиться от неотслеживаемых файлов и каталогов в вашей рабочей копии.

Если вам нужно сбросить весь репозиторий на master, включая все подмодули git, запустите этот скрипт:

git reset --hard HEAD
git clean -f -d
git checkout master
git fetch origin master
git reset --hard origin/master
git pull
git submodule update
git submodule update --init --recursive
git submodule foreach git reset --hard HEAD
git submodule foreach git clean -f -d
git submodule foreach git submodule update --init --recursive
git submodule foreach git fetch
git submodule foreach git pull
git status
51 голосов
/ 23 июня 2014

Если у вас есть файлы, которые вы все еще хотите сохранить:

git clean -di выполнит интерактивную очистку, которая позволит вам удалять только те файлы / каталоги, которые вам больше не нужны.

38 голосов
/ 09 июля 2015
git reset --hard && git clean -dfx

или zsh предоставляет псевдоним gpristine:

alias gpristine='git reset --hard && git clean -dfx'

Что действительно удобно

15 голосов
/ 14 июня 2017

Интерактивный пользовательский подход:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i для интерактивных
-f для форсированных действий
-d для каталогов
-x для игнорируемых файлов (добавьте, если требуется)

Примечание: Добавьте -n или - пробный прогон , чтобы просто проверитьчто он будет делать.

1 голос
/ 02 декабря 2017

Команда, которую вы ищете: git clean

0 голосов
/ 26 июня 2014

Возможно, в какой-то момент вы сделали мягкий сброс, вы можете решить эту проблему, выполнив

git add .
git reset --hard HEAD~100
git pull
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...