要将特定文件重置为最后提交状态(以丢弃特定文件中未提交的更改):
git checkout thefiletoreset.txt
git status
输出中提到了这一点:
(use "git checkout -- <file>..." to discard changes in working directory)
要将整个存储库重置为最后的提交状态,请执行以下操作:
git reset --hard
要删除未跟踪的文件,我通常只删除工作副本中的所有文件(而不是.git/
文件夹!),然后执行git reset --hard
,仅保留已提交的文件。
更好的方法是使用git clean
(警告:如下使用-x
标志将导致 Git 删除忽略的文件):
git clean -d -x -f
将删除未跟踪的文件,包括目录( -d
)和 git 忽略的文件( -x
)。 -f
参数替换为-n
以执行试运行,或者将-i
替换为交互式模式,它将告诉您将要删除的内容。
相关链接:
到目前为止,所有答案都保留本地提交。如果您真的很认真,可以通过执行以下操作放弃所有本地提交和所有本地编辑:
git reset --hard origin/branchname
例如:
git reset --hard origin/master
这使您的本地存储库与原始状态完全匹配(未跟踪的文件除外)。
如果您只是在读了命令之后而不是在做它之后才不小心:),请使用 git reflog 查找您的旧提交。