Как вернуть незавершенные изменения, включая файлы и папки?

StackOverflow https://stackoverflow.com/questions/5807137

Вопрос

Есть ли команда GIT, чтобы вернуть все незавершенные изменения в рабочем дереве и индексе, а также удалить вновь созданные файлы и папки?

Это было полезно?

Решение

Вы можете запустить эти две команды:

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`)
git clean -fd

Другие советы

Если вы хотите вернуть изменения только в текущем рабочем каталоге, используйте

git checkout -- .

И до этого вы можете перечислить файлы, которые будут возвращены, не предпринимая никаких действий, просто чтобы проверить, что произойдет, с:

git checkout --

Используйте "GIT Checkout - ...", чтобы отказаться от изменений в рабочем каталоге

git checkout -- app/views/posts/index.html.erb

или же

git checkout -- *

Удаляет все изменения, внесенные в неуверенные файлы в статусе GIT, например,

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb

Один нетривиальный способ-запустить эти две команды:

  1. git stash Это перенесет ваши изменения в тайник, вернет вас в состояние головы
  2. git stash drop Это удалит последний тайник, созданный в последней команде.
git clean -fd

Не помог, новые файлы остались. То, что я сделал, это полностью удалить все рабочее дерево, а затем

git reset --hard

Видеть "Как очистить свой местный рабочий каталог в GIT?"Для совета добавить -x вариант очистки:

git clean -fdx

Примечание -x Флаг удалит все файлы, игнорируемые GIT, так что будьте осторожны (см. Обсуждение в ответе, на который я имею в виду).

Я думаю, что вы можете использовать следующую команду: git reset --hard

Обратите внимание, что все еще могут быть файлы, которые, похоже, не исчезнут - они могут быть нередкими, но GIT, возможно, отметил их как отредактированные из -за изменений CRLF / LF. Посмотрите, сделали ли вы некоторые изменения в .gitattributes совсем недавно.

В моем случае я добавил настройки CRLF в .gitattributes Файл и все файлы остались в списке «Изменены файлы» из -за этого. Изменение настройки .gitattributes заставило их исчезнуть.

Если у вас есть незавершенное изменение (только в вашей рабочей копии), которое вы хотите вернуться к копии в своем последнем коммите, сделайте следующее:

git checkout filename

Вы можете просто использовать следующую команду GIT, которая может вернуть все невозможные изменения, сделанные в вашем репозитории:

git checkout .

Пример:

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   application/controllers/Drivers.php
        modified:   application/views/drivers/add.php
        modified:   application/views/drivers/load_driver_info.php
        modified:   uploads/drivers/drivers.xlsx

no changes added to commit (use "git add" and/or "git commit -a")

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

GIT 2.23 введен git restore Команда восстановить файлы рабочих деревьев.

https://git-cm.com/docs/git-restore

Чтобы восстановить все файлы в текущем каталоге

git восстановить.

Если вы хотите восстановить все исходные файлы C, чтобы соответствовать версии в индексе, вы можете сделать

git восстановить '*.c'

Безопасный и долгий путь:

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. git branch -D todelete

Я обычно использую такой способ, который работает хорошо:

mv fold/file /tmp
git checkout fold/file

Использовать:

git reset HEAD filepath

Например:

git reset HEAD om211/src/META-INF/persistence.xml
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top