ГИТ отменить все несохраненные или несохраненные изменения
Я пытаюсь отменить все изменения с момента моего последнего коммита. Я пытался!--0--> и 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
создает новый тайник, который станет тайник@{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
каждый тайник назван после предыдущего коммита messsage.
появилась git stash
- который "прячет" ваши локальные изменения и может быть применен позже или удален, если больше не требуется
больше информация о stashing
для тех, кто достиг здесь ищет, если они могут отменить 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