小编典典

git 撤消所有未提交或未保存的更改

all

我正在尝试撤消自上次提交以来的所有更改。我试过了git reset --hardgit reset --hardHEAD。我的回应是 head 现在是 18c3773
......但是当我查看我的本地源时,所有文件仍然存在。我错过了什么?


阅读 165

收藏
2022-02-28

共1个答案

小编典典

  • 这将取消暂存您可能已暂存的所有文件git add

    git reset
    
  • 这将恢复所有本地未提交的更改(应在 repo root 中执行):

    git checkout .
    

您还可以仅将未提交的更改还原到特定文件或目录:

    git checkout [some_dir|file.txt]

恢复所有未提交更改的另一种方法(更长的类型,但适用于任何子目录):

    git reset --hard HEAD
  • 这将删除所有本地未跟踪的文件,因此 保留 git 跟踪的文件:
    git clean -fdx
    

警告: -x 还将删除所有被忽略的文件,包括由.gitignore! 您可能希望-n用于预览要删除的文件。


总结一下:执行下面的命令基本上等同于git clone从原始源下载(但它不会重新下载任何东西,所以要快得多):

git reset
git checkout .
git clean -fdx

典型的用法是在构建脚本中,当您必须确保您的树绝对干净时 - 没有任何修改或本地创建的目标文件或构建工件,并且您希望使其工作非常快并且不重新
-每次克隆整个存储库。

2022-02-28