git отменить все незафиксированные или несохраненные изменения
Я пытаюсь отменить все изменения с момента моего последнего коммита. Я пытался git reset --hard
и git reset --hard HEAD
после просмотра этот пост. Я отвечаю с головой теперь в 18c3773... но когда я смотрю на свой локальный источник, все файлы все еще там. Чего мне не хватает?
6 ответов:
это будет unstage все файлы, которые вы могли бы поставить с
git add
:git reset
это вернет все локальные незафиксированные изменения (должны быть выполнены в корне РЕПО):
git checkout .
вы также можете вернуть незафиксированные изменения только в определенный файл или каталог:
git checkout [some_dir|file.txt]
еще один способ вернуть все незафиксированные изменения (дольше вводить, но работает с любого подкаталог):
git reset --hard HEAD
это приведет к удалению всех локальных файлов без отслеживания, так что только git отслеживаемые файлы остаются:
git clean -fdx
предупреждение:
-x
также удалит все игнорируемые файлы, включая те, которые указаны.gitignore
! Вы можете использовать-n
для предварительного просмотра файлов, которые будут удалены.
подводя итог: выполнение команд ниже в основном эквивалентно fresh
git clone
от исходный код (но он ничего не перекачивает, поэтому намного быстрее):git reset git checkout . git clean -fdx
типичное использование для этого было бы в сценариях сборки, когда вы должны убедиться, что ваше дерево абсолютно чистое - не имеет никаких изменений или локально созданных объектных файлов или артефактов сборки, и вы хотите, чтобы он работал очень быстро и не клонировал весь репозиторий каждый раз.
если вы хотите "отменить" все незафиксированные изменения, просто запустите:
git stash git stash drop
если у вас есть неотслеживаемый файлы (проверить, работает
git status
), Они могут быть удалены с помощью команды:git clean -fdx
git stash
создает новый тайник, который станет stash@{0}. Если вы хотите проверить сначала вы можете запуститьgit stash list
чтобы увидеть список ваших заначек. Это будет выглядеть примерно так:stash@{0}: WIP on rails-4: 66c8407 remove forem residuals stash@{1}: WIP on master: 2b8f269 Map qualifications stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders stash@{3}: WIP on blogit: c9bd270 some changes
каждый тайник назван в честь предыдущее сообщение.
появилась
git stash
- который "прячет" ваши локальные изменения и может быть повторно применен позже или удален, если больше не требуетсябольше информация о припрятать
для тех, кто добрался сюда в поисках, если бы они могли отменить
git clean -f -d
, с помощью которого создается файл в затмение удалено,вы можете сделать то же самое из пользовательского интерфейса, используя "восстановление из локальной истории" для ref:Восстановить из местной истории
состояния, переходящие от одного коммита к новому коммиту
0. last commit,i.e. HEAD commit 1. Working tree changes, file/directory deletion,adding,modification. 2. The changes are staged in index 3. Staged changes are committed
действие для перехода состояния
0->1: manual file/directory operation 1->2: git add . 2->3: git commit -m "xxx"
проверить diff
0->1: git diff 0->2: git diff --cached 0->1, and 0->2: git diff HEAD last last commit->last commit: git diff HEAD^ HEAD
вернуться к последней фиксации
2->1: git reset 1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories) 1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories) 2->1, and 1->0: git reset --hard HEAD
эквивалент git clone, без повторной загрузки ничего
git reset; git checkout .; git clean -fdx