跳至内容
GitTree
Git 指南阅读 1 分钟

如何在 Git 中放弃本地更改并删除未跟踪的文件

三个不同的命令清除三种不同的变化。以下是如何丢弃编辑、暂存的更改和新文件、一个文件或所有文件,以及如何先预览它,这样就不会有任何重要的事情发生。

撰写者 Kodmora

GitTree 背后的软件公司

已更新
  • 撤消和恢复
  • 分期
在此页面上

要放弃对跟踪文件的更改,请运行 `git restore .` 要删除未跟踪的文件和文件夹,请运行 `git clean -fd`。要完全返回到上次提交,请运行 `git reset --hard`,然后运行 ​​`git clean -fd`。 Git 无法在事后恢复这些更改,因此请先使用 git status 和 git clean -nd 进行预览。

哪个命令丢弃什么?

每种更改的命令
你想要的东西消失了命令
编辑一个跟踪文件git restore path/to/file
编辑所有跟踪的文件git restore .
分阶段更改,保留编辑git restore --staged .
分阶段的更改和编辑git restore --staged --worktree .
Git 不跟踪新文件git clean -f
新文件和文件夹git clean -fd
自上次提交以来的所有内容git reset --hard 然后 git clean -fd

如何放弃对一个文件的更改?

git restore src/search.ts

# only some of the changes, hunk by hunk
git restore -p src/search.ts

# the same file as it was on another branch
git restore --source=main src/search.ts

较旧的指南使用 git checkout -- src/search.ts。它仍然有效,但 git restore(Git 2.23 或更高版本)仅执行这一项工作,因此更难滥用。

如何放弃所有本地更改?

# tracked files, staged or not
git reset --hard

# then untracked files and folders
git clean -fd

# confirm
git status
# nothing to commit, working tree clean

没有提交的 git reset --hard 会将分支保留在原来的位置,并且只清除文件。 Git Reset 解释 介绍了命名提交时它的作用。

如何取消暂存文件而不丢失它?

git restore --staged src/search.ts

文件离开暂存区域,您的编辑保留在工作文件夹中。什么都没有被删除。

如何使用 git clean 删除未跟踪的文件?

始终先预览。 -n 是一次预演,仅列出将要执行的操作:

# preview files and folders
git clean -nd

# delete them
git clean -fd

# ask about each one
git clean -id
git 清理选项
旗帜含义
-n试运行:仅列出,不删除任何内容
-fForce:需要删除任何内容
-d包括未跟踪的文件夹
-i互动:选择发生的事情
-x同时删除忽略的文件,例如 .env 和 node_modules
-X仅删除被忽略的文件

我可以恢复放弃的更改吗?

  • 提交的工作: 是的,通过 git reflog。
  • 隐藏的工作:是的。即使是掉落的储藏室也经常可以找到,如恢复掉落的储藏室 中所示。
  • 已暂存但从未提交: 有时,与 git fsck --lost-found 一起。
  • 从未暂存过:没有。你的编辑的当地历史可能仍然有它。

如果文件被删除并提交,如何恢复已删除的文件 有步骤。

如何放弃 GitTree 中的更改

  1. 选择要扔掉的东西

    将鼠标悬停在更改面板中的文件并选择“放弃对文件的更改...”,或右键单击多个文件以进行“放弃对文件的更改...”。在差异中,使用 Discard Hunk 或 Discard Lines。

  2. 清理或清理一切

    从命令选项板运行 清理未跟踪的文件... 或 放弃所有更改...。

  3. 阅读确认信息

    该对话框命名了将要执行的操作,并且 取消 是默认值。 GitTree 首先保存恢复快照,因此 撤消 可以将其恢复。

放弃 GitTree 中的一个文件:将鼠标悬停在该文件上,按放弃,阅读确认信息。
放弃 GitTree 中的一个文件:将鼠标悬停在该文件上,按放弃,阅读确认信息。GitTree 与演示存储库的接口。

请参阅放弃更改并清理未跟踪的文件 了解每个选项,并参阅忽略并清理课程 进行练习。

常见问题

git恢复和git checkout有什么区别?

git checkout 都可以切换分支并恢复文件。 Git 2.23 将这些作业拆分为 git switch 和 git restore,更加清晰。旧的形式仍然有效。

git reset --hard 是否删除未跟踪的文件?

不会。它仅重置跟踪的文件。新文件将保留到您运行 git clean -fd 为止。

为什么 git clean 说“拒绝清理”?

Git 默认需要 -f (clean.requireForce),这样拼写错误就无法删除文件。一旦试运行看起来正确,就添加 -f。

git clean 会删除被忽略的文件吗?

除非您添加 -x 或 -X,否则不会。普通的 git clean -fd 会保留 .gitignore 中的所有内容。

如何保留更改但获得干净的文件夹?

运行git stash -u。它保存跟踪和未跟踪的更改并清除文件夹。稍后使用 git stash pop 将它们带回来,如隐藏指南 中所述。

来源

有关其他产品的声明已根据其位于 2026年11月7日 的官方页面进行了检查。价格和功能发生变化;供应商的页面是事实的来源。