Я добавил несколько новых файлов в репозиторий. Внесены некоторые изменения в существующие файлы, удалено несколько файлов и т. д.
когда я выпускаю "git stash"
, я ожидаю, что все мои локальные изменения будут отменены, и у меня должна быть чистая рабочая копия моего удаленного репо. Но файлы, которые я недавно добавил, все еще отображаются в «статусе git». Я удалил файлы вручную.
почему это так? Должен ли я оформить "git reset"
?
Чтобы воспроизвести:
Предполагая, что abc.txt создан новый файл. Когда я делаю "git stash", файл все еще присутствует.
Я думаю это может вам помочь.
Новые файлы не отслеживаются и по умолчанию git stash
не включают их. Итак, вам нужно бежать git stash --include-untracked
или git stash --all
, чтобы все спрятать.
Имейте в виду, что вы можете в конечном итоге спрятать проигнорированные файлы с помощью команды git stash --all
.
Другой способ (может быть, более простой) решить эту проблему — перенести неустановленные изменения в рабочую область:
Запуск git add path/to/file
или git add .
заставляет git отслеживать эти файлы. Тогда просто запустите git stash
, и это может творить чудеса.
Я думаю, что трудно запомнить всю команду --include-untracked. Я чувствую, что делать git add, а затем git stash немного легко. Но я почему-то убежден, что GIT заставляет разработчиков заставлять изучать команды.
Ага. Ты прав. Я забыл об этом. Я собираюсь обновить ответ, чтобы включить это.
Вы можете использовать reset
, но тогда ваши изменения будут потеряны, и изменение мнения не принесет вам никакой пользы, но с stash
вы можете вернуть их, используя git stash pop
.
Причина, по которой git stash не хранит неотслеживаемые файлы:
По умолчанию при запуске git stash будет храниться:
Но не спрячется:
Итак, теперь остается вопрос: как использовать git stash.
TL;DR Два способа использования тайника
Добавьте параметр -u (или --include-untracked), чтобы указать git stash также спрятать ваши неотслеживаемые файлы, чтобы наша команда стала
git stash -u
Вы также можете включить изменения в игнорируемые файлы, передав опцию -a (или --all) при запуске git stash, и наша команда примет форму
git stash -all
Ознакомьтесь с этой статьей для более подробной информации.
Я полагаю, это имеет больше смысла и проще. Добавление в индекс, а затем выполнение тайника. git добавить путь/к/неотслеживаемому-файлу, git stash