Чи є команда git для відновлення всіх неподілених змін у робочому дереві та індексі, а також для видалення новостворених файлів і папок?
Чи є команда 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 clean -i
для інтерактивного режиму.
git merge --abort
.
Якщо ви хочете відновити зміни лише в поточному робочому каталозі, використовуйте
git checkout -- .
А перед цим ви можете перелічити файли, які будуть повернені, фактично не роблячи жодних дій, просто перевірити, що буде, за допомогою:
git checkout --
git reset --hard
?
Використовуйте "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
git checkout -- *
не працює для мене, якщо я не знаходжусь у каталозі, де знаходяться змінені файли. Щоб перевірити всі файли у всьому сховищі, потрібно зробитиgit checkout -- :/
git checkout -- *
, зірку замінює Shell, з усіма файлами та каталогами в поточному каталозі. Тож воно має йти у підкаталогах. Це працює для мене. Але завдяки виділенню синтаксису ": /", який, на мою думку, виглядає чистішим.
Один нетривіальний спосіб - запустити ці дві команди:
git stash
Це змістить ваші зміни в сховище, повернувши вас до стану HEADgit stash drop
Це видалить останню скриньку, створену в останній команді.fatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
не допомогло, нові файли залишилися. Що я зробив, це повністю видалити все робоче дерево, а потім
git reset --hard
Див. Розділ " Як очистити свій локальний робочий каталог в git? ", Щоб отримати поради -x
щодо очищення:
git clean -fdx
-x
Прапор примітки видалить усі ігноровані Git файли, тому будьте обережні (див. Обговорення у відповіді, на яку я посилаюся).
Я думаю, ви можете використовувати таку команду: git reset --hard
Зауважте, що все ще можуть бути файли, які, схоже, не зникають - вони можуть бути відредаговані, але git, можливо, позначив їх як відредаговані через зміни CRLF / LF. Подивіться, чи .gitattributes
нещодавно ви внесли якісь зміни .
У моєму випадку я додав у .gitattributes
файл налаштування CRLF, і всі файли через це залишилися у списку "модифікованих файлів". Змінивши налаштування .gitattributes, вони зникли.
Якщо у вас є неопублікована зміна (її є лише у вашій робочій копії), яку ви хочете повернути до копії в останньому документі, виконайте наступне:
git checkout filename
git rm filename
, і це не працює. error: pathspec 'filename' did not match any file(s) known to git.
git rm
цеgit checkout master -- filename
У Git 2.23 введена git restore
команда відновлення файлів робочого дерева.
https://git-scm.com/docs/git-restore
Для відновлення всіх файлів у поточному каталозі
відновлення git.
Якщо ви хочете відновити всі вихідні файли C, щоб відповідати версії в індексі, ви можете зробити це
git recovery '* .c'
Ви можете просто скористатися наступною командою 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 branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete