У меня есть проект, в котором я участвовал git init
. После нескольких коммитов я git status
сказал, что все обновлено, и локальных изменений не было.
Затем я сделал несколько последовательных изменений и понял, что хочу все выбросить и вернуться в исходное состояние. Эта команда сделает это для меня?
git reset --hard HEAD
источник
git checkout path/to/file
будет только отменить локальные измененияpath/to/file
git checkout .
иgit reset [--hard HEAD]
не работал, я должен был сделать,git clean -fd
чтобы отменить мои изменения.git reset
не сбрасывает ваши изменения,git reset --hard
делает это.Примечание: вы также можете запустить
в виде
будет не удалять файлы неотслеживаемых, где , как ГИТ-чистый удалят файлы из гусеничной корневой директории, которые не находится под мерзавцем трекинга. ВНИМАНИЕ - будьте осторожны с этим! Полезно сначала запустить пробный прогон с git-clean, чтобы посмотреть, что он удалит.
Это также особенно полезно, когда вы получаете сообщение об ошибке
Это может произойти при выполнении нескольких действий, например, при обновлении рабочей копии, когда вы и ваш друг добавили новый файл с одним и тем же именем, но он сначала передал его в систему контроля версий, и вам не нужно удалять свою неотслеживаемую копию. ,
В этой ситуации пробный запуск также поможет показать список файлов, которые будут перезаписаны.
источник
Re-клон
.gitignore
(например, файлы сборки).gitignore
Ниже приведены другие команды, которые я ежедневно забываю.
Очистить и сбросить
.gitignore
(например, файлы сборки).gitignore
чистый
.gitignore
(например, файлы сборки).gitignore
Сброс
.gitignore
(например, файлы сборки).gitignore
Ноты
Тестовый пример для подтверждения всего вышеперечисленного (используйте bash или sh):
Смотрите также
git revert
делать новые коммиты, которые отменяют предыдущие коммитыgit checkout
чтобы вернуться во времени к предыдущим коммитам (может потребоваться сначала выполнить вышеуказанные команды)git stash
так же, как иgit reset
выше, но вы можете отменить этоисточник
git clean -f -d -x
: если указана опция -x, игнорируемые файлы также удаляются. Это может быть полезно, например, для удаления всех продуктов сборки. - Из документов GITЕсли вы хотите отменить все изменения и быть в курсе текущего удаленного мастера (например, вы обнаружите, что мастер HEAD продвинулся с тех пор, как вы его разветвили, а ваш push 'отклонен'), вы можете использовать
источник
origin
вgit reset --hard origin/master
(который работает) - без него (то естьgit reset --hard
), кажется, ничего не изменилось.Посмотри в git-reflog. В нем будут перечислены все состояния, которые он помнит (по умолчанию 30 дней), и вы можете просто оформить заказ на тот, который вам нужен. Например:
источник
git rebase -i
ошибкой пошло не так (в итоге я потерял некоторые коммиты из-за ошибки редактирования). Благодаря этому совету я снова в хорошем состоянии!ОПАСНОСТЬ ВПЕРЕД: (пожалуйста, прочитайте комментарии. Выполнение команды, предложенной в моем ответе, может удалить больше, чем вы хотите)
чтобы полностью удалить все файлы, включая каталоги, которые я должен был запустить
источник
Прочитав кучу ответов и попробовав их, я обнаружил различные крайние случаи, которые означают, что иногда они не полностью очищают рабочую копию.
Вот мой текущий скрипт bash для этого, который работает постоянно.
Запустить из рабочей копии корневую директорию.
источник
error: pathspec 'HEAD' did not match any file(s) known to git.
git checkout HEAD
git reset --hard
возвращает отслеживаемые файлы (git clean -f -d
помеченные или нет), удаляет неотслеживаемые файлы,git checkout -- HEAD
зачем нам это тогда?просто выполнить -
это удалит все ваши локальные изменения. и вы также можете использовать его позже, выполнив -
источник
git stash pop
автоматически уберет самое верхнее скрытое для вас изменениеgit stash drop
удалить последнее сохраненное состояние без применения к рабочей копии.Я встретил похожую проблему. Решение состоит в том,
git log
чтобы найти, какая версия локальной фиксации отличается от удаленной. (Например, версия3c74a11530697214cbcc4b7b98bf7a65952a34ec
).Затем используйте,
git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec
чтобы отменить изменение.источник
Я искал похожую проблему,
Хотел выбросить местные коммиты:
Так же и ниже:
Проверьте:
теперь локальные коммиты теряются, возвращаясь к исходному клонированному состоянию, пункт 1 выше.
источник
Возможно, вам не обязательно захочется / нужно хранить ваши работы / файлы в рабочем каталоге, а просто избавиться от них полностью. Команда
git clean
сделает это за вас.Некоторые распространенные случаи использования для этого могут заключаться в удалении ненужных файлов , созданных слиянием или внешними инструментами, или в удалении других файлов, чтобы вы могли запустить чистую сборку.
Имейте в виду, что вы должны быть очень осторожны с этой командой, так как она предназначена для удаления файлов из вашего локального рабочего каталога, которые НЕ отслеживаются. если вы неожиданно передумаете после выполнения этой команды, вы не вернетесь назад, чтобы просмотреть содержимое удаленных файлов. Альтернатива, которая является более безопасной, - это выполнить
git stash --all
который удалит все, но сохранит все в тайнике. Этот тайник потом может быть использован.
Однако, если вы действительно хотите удалить все файлы и очистить ваш рабочий каталог, вы должны выполнить
git clean -f -d
Это удалит все файлы, а также любые подкаталоги, в которых нет элементов в результате выполнения команды. Умная вещь, которую нужно сделать перед выполнением
git clean -f -d
команды, это запуститькоторый покажет вам предварительный просмотр того, что будет удалено после выполнения
git clean -f -d
Итак, вот краткое изложение ваших вариантов от самых агрессивных до наименее агрессивных
Вариант 1 : удалить все файлы локально (наиболее агрессивно)
Вариант 2 : Предварительный просмотр вышеупомянутого воздействия (Предварительный просмотр наиболее агрессивный)
Вариант 3 : спрятать все файлы (наименее агрессивные)
источник
Попробуйте это для отмены всех изменений, которые не были переданы в локальную ветку.
Но если вы видите такую ошибку:
Вы можете перейти в папку «.git», а затем удалить файл index.lock:
Наконец, снова запустите команду:
источник
Этот вопрос больше касается более широкого сброса / возврата репозитория, но в случае, если вы заинтересованы в возврате отдельных изменений - я добавил аналогичный ответ здесь:
https://stackoverflow.com/a/60890371/2338477
Ответы на вопросы:
Как отменить индивидуальные изменения с сохранением или без изменений в истории git
Как вернуться к старой версии, чтобы перезапустить из того же состояния
источник