git放弃修改工作区文件

您想丢弃所有本地的修改,包括已修改的文件 (modified)未追踪的文件 (untracked files)

这需要两步操作,因为 Git 处理这两种情况的命令不同。


方案一:分步操作(推荐,更安全)

第1步:撤销对已修改文件的更改

这些是 "Changes not staged for commit" 下列出的文件。

使用 git restore 命令:

  
git restore .
  
  • 这个命令会撤销当前目录下所有已修改但未暂存(add)的文件的更改,让它们恢复到上次提交时的状态。

  • (旧版本的 Git 使用 git checkout -- .,效果相同)

第2步:删除未追踪的文件

这些是 "Untracked files" 下列出的文件。git restore 不会影响它们。

需要使用 git clean 命令。

首先,建议先预览一下将要删除哪些文件(不会真的删除):

  
git clean -n
  

确认无误后,执行真正的删除命令:

  
git clean -f
  
  • -f--force 的缩写,因为删除操作是不可逆的,Git 要求你强制执行。

方案二:一个命令搞定(快速但需谨慎)

如果你确定要丢弃所有修改和未追踪的文件,可以把两个命令连起来:

  
git restore . && git clean -f
  

总结

| 你的需求 | 对应命令 | 解释 |

| :--- | :--- | :--- |

| 只想撤销已修改的文件 | git restore . | 恢复 modified 列表中的文件,不影响新文件。 |

| 只想删除未追踪的新文件 | git clean -f | 删除 untracked 列表中的文件,不影响已修改文件。 |

| 全部都不要了 | git restore . && git clean -f | 先恢复已修改文件,再删除新文件,彻底回到干净的工作区。 |

请注意: 这些操作会永久丢弃你的本地修改,执行前请务必确认这些修改真的不再需要了。