git отменить все незафиксированные или несохраненные изменения


Я пытаюсь отменить все изменения с момента моего последнего коммита. Я пытался git reset --hard и git reset --hard HEAD после просмотра этот пост. Я отвечаю с головой теперь в 18c3773... но когда я смотрю на свой локальный источник, все файлы все еще там. Чего мне не хватает?

6 577

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 - который "прячет" ваши локальные изменения и может быть повторно применен позже или удален, если больше не требуется

больше информация о припрятать

Я использую исходное дерево.... Вы можете отменить все незафиксированные изменения с помощью 2 простых шагов:

1) просто нужно сбросить статус файла рабочего пространства

enter image description here 2) Выберите все файлы unstage (command +a), щелкните правой кнопкой мыши и выберите Удалить

enter image description here

Это так просто: D

для тех, кто добрался сюда в поисках, если бы они могли отменить 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