Я работаю над веткой, скажем, «экспериментальной» веткой, которую я разветвляю из своей основной ветки. Затем я создаю модель пользователя в экспериментальной ветке, но еще не добавляю ее в индекс.
Что мне делать, если я хочу отменить все изменения файлов, недавно добавленных в мою экспериментальную ветку? Неотслеживаемые файлы перечислены ниже:
$ git status
On branch new_chick
Untracked files:
(use "git add <file>..." to include in what will be committed)
.project
app/models/user.rb
db/migrate/
test/fixtures/users.yml
test/unit/user_test.rb
Я попытался запустить "git reset --hard" в надежде отменить все эти изменения, но все файлы выше все еще отображаются.
Кто-нибудь, пожалуйста, пролейте на меня немного света?
Ответы:
Чтобы удалить неотслеживаемые файлы / каталоги, выполните:
-f - сила
-d - каталоги тоже
-x - удалить также игнорируемые файлы (не используйте это, если не хотите удалять игнорируемые файлы)
Используйте с осторожностью!
Эти команды могут навсегда удалить произвольные файлы, о которых вы сначала не думали. Пожалуйста, дважды проверьте и прочтите все комментарии под этим ответом и разделом --help и т. Д., Чтобы знать все детали, чтобы точно настроить свои команды и, несомненно, получить ожидаемый результат.
источник
-x
ВНИМАНИЕ, потому что это приведет к безвозвратному удалению файлов. Или используйте with,-n
как упомянуто @Druska-x
до сих пор .project и другие файлы конфигурации были удалены. Пришлось снова вытащить репо из последней фиксации в новый каталог.Интерактивный подход к пользователю:
-i для интерактивного
-f для принудительного
-d для каталога
-x для игнорируемых файлов (добавьте, если требуется)
Примечание: добавьте -n или --dry-run, чтобы просто проверить, что он будет делать.
источник
Это неотслеживаемые файлы. Это означает, что git их не отслеживает. Он перечисляет их только потому, что их нет в файле игнорирования git. Так как они не отслеживаются git,
git reset
не трогаем их.Если вы хотите удалить все неотслеживаемые файлы, самый простой способ - это
git clean -f
(используйтеgit clean -n
вместо этого, если хотите увидеть, что он уничтожит, не удаляя что-либо). В противном случае вы можете просто удалить ненужные файлы вручную.источник
Для удаления неотслеживаемых файлов:
git clean -f
Для удаления неотслеживаемых каталогов также используйте:
git clean -f -d
Для предотвращения остановки сердца используйте
git clean -n -f -d
источник
Вы также можете вернуться к предыдущему состоянию локального репо другим способом:
git add
.git reset --hard
.источник
Команда для вашего спасения
git clean
.источник
Ну, у меня была аналогичная проблема. Я взял последнюю, но в локальном были некоторые изменения, из-за которых слияние не происходило с конкретным файлом. Файл не отслеживался, и я не хотел их, поэтому я сделал следующее:
$ git checkout путь к файлу / имя файла
filepath - место, откуда я сделал git bash. затем, когда я взял последние, изменения были доступны
источник
Хотя
git clean
работает хорошо, я все же считаю полезным использовать мой собственный скрипт для очистки репозитория git, но у него есть некоторые преимущества.Это показывает список файлов, которые нужно очистить, а затем интерактивно предлагает очистить или нет. Это почти всегда то, что я хочу, поскольку интерактивные подсказки для каждого файла утомительны.
Он также позволяет вручную фильтровать список, что удобно, когда есть типы файлов, которые вы не хотите очищать (и у вас есть причина не фиксировать).
git_clean.sh
источник