Подтвердить что ты не робот

Git reset --hard HEAD оставляет неизведанные файлы позади

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

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

4b9b3361

Ответ 1

Вы должны использовать 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

Ответ 2

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

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

Ответ 3

git reset --hard && git clean -dfx

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

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

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

Если вы работаете с разветвленным репо, убедитесь, что вы выбрали и сбросили из правильного репо/ветки, например:

git fetch upstream && git reset --hard upstream/master && git clean -df

Ответ 4

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

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 или - сухим, чтобы просто проверить, что он будет делать.

Ответ 5

Вы можете использовать git stash. Вы должны указать --include-untracked, в противном случае вы получите исходную проблему.

git stash --include-untracked

Тогда просто брось последнюю запись в stash

git stash drop

Ответ 6

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

Ответ 7

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

git add .
git reset --hard HEAD~100
git pull