如何使用Git的Checkout命令撤销本地未提交的代码修改?

2026-04-24 20:401阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计977个文字,预计阅读时间需要4分钟。

如何使用Git的Checkout命令撤销本地未提交的代码修改?

在Git 2.23版本中,`git checkout`已被标记为过时,官方推荐使用`git restore`来替代。然而,许多团队仍在使用旧版Git,且`git checkout`在处理未暂存的(unstaged)文件时可能会产生误操作——它不会提示确认,直接覆盖工作区文件内容。

执行 git checkout -- <file> 会把该文件恢复到 HEAD 版本(即最近一次 commit 的状态),所有本地编辑、新增行、删减都会被清空,且无法通过 git reflog 恢复(因为没产生新引用)。

  • 只对已跟踪(tracked)文件生效;对 git status 显示为 Untracked files: 的新文件无效
  • 如果文件有暂存(staged)修改,git checkout -- <file> 会同时丢弃暂存区和工作区改动
  • 路径必须存在,否则报错:error: pathspec 'xxx' did not match any file(s) known to git

撤销单个文件用 git checkout -- filename

这是最常见也最容易出错的操作场景:改了一个配置文件,想退回上一版,但忘了自己刚加了三行调试日志。

阅读全文
标签:Git

本文共计977个文字,预计阅读时间需要4分钟。

如何使用Git的Checkout命令撤销本地未提交的代码修改?

在Git 2.23版本中,`git checkout`已被标记为过时,官方推荐使用`git restore`来替代。然而,许多团队仍在使用旧版Git,且`git checkout`在处理未暂存的(unstaged)文件时可能会产生误操作——它不会提示确认,直接覆盖工作区文件内容。

执行 git checkout -- <file> 会把该文件恢复到 HEAD 版本(即最近一次 commit 的状态),所有本地编辑、新增行、删减都会被清空,且无法通过 git reflog 恢复(因为没产生新引用)。

  • 只对已跟踪(tracked)文件生效;对 git status 显示为 Untracked files: 的新文件无效
  • 如果文件有暂存(staged)修改,git checkout -- <file> 会同时丢弃暂存区和工作区改动
  • 路径必须存在,否则报错:error: pathspec 'xxx' did not match any file(s) known to git

撤销单个文件用 git checkout -- filename

这是最常见也最容易出错的操作场景:改了一个配置文件,想退回上一版,但忘了自己刚加了三行调试日志。

阅读全文
标签:Git