Git 中丢弃未暂存更改的方法 技术背景 在使用 Git 进行版本控制时,我们常常会对文件进行修改。这些修改会处于不同的状态,如未暂存、已暂存和已提交。有时,我们可能需要丢弃那些还未暂存的更改,以恢复到之前的状态。这可能是因为我们进行了错误的修改,或者想要重新开始某些工作。
实现步骤 方法一:使用 git restore(Git 2.23 及以上版本) 1 git restore path/to/file/to/revert
方法二:使用 git checkout(Git 2.23 之前版本) 1 git checkout -- path/to/file/to/revert
方法三:结合 git clean 和 git checkout 1 2 git clean -df git checkout -- .
git clean -df 用于删除所有未跟踪的文件和目录,git checkout -- . 用于清除所有未暂存的更改。
方法四:使用 git stash 1 git stash save --keep-index --include-untracked
如果不需要处理未跟踪的文件,可以不使用 --include-untracked。之后,如果想丢弃这个 stash,可以使用 git stash drop 命令。
方法五:使用 git checkout -p 此命令可以让你选择性地撤销更改块。
核心代码 使用 git restore 丢弃未暂存更改 1 2 3 4 5 git restore . git restore path/to/file
使用 git checkout 丢弃未暂存更改 1 2 3 4 5 git checkout -- . git checkout -- path/to/file
结合 git clean 和 git checkout 1 2 git clean -df git checkout -- .
最佳实践 使用 git status 查看状态 :在执行任何丢弃操作之前,使用 git status 命令查看当前工作目录的状态,确保你要丢弃的是未暂存的更改。使用 git restore 或 git checkout 处理已跟踪文件 :如果只需要丢弃已跟踪文件的未暂存更改,优先使用 git restore(Git 2.23 及以上)或 git checkout。结合 git clean 处理未跟踪文件 :如果存在未跟踪的文件,并且你确定要删除它们,可以结合使用 git clean -df。使用 git stash 保存更改 :如果你不确定是否要永久丢弃更改,可以使用 git stash 将更改保存起来,之后可以随时恢复。常见问题 git checkout -- . 提示错误如果存在未跟踪的文件,git checkout -- . 可能会提示错误:error: The following untracked working tree files would be overwritten by checkout。此时可以结合 git clean -df 先删除未跟踪的文件,再执行 git checkout -- .。
git clean -df 删除了重要文件git clean -df 可能会删除一些你不想删除的文件,如配置文件等。在执行该命令之前,可以先使用 git clean -dfn 进行预览,确认要删除的文件列表。
git stash 污染了 stash 栈git stash 会将更改保存到 stash 栈中,如果频繁使用可能会导致 stash 栈变得混乱。可以使用 git stash drop 删除不需要的 stash。