放弃所有未提交的更改,已修改的文件,已添加的文件和未添加的文件

时间:2019-03-17 19:59:40

标签: git git-reset

使用Git丢弃未提交的更改的最佳方法是什么。

我读了这篇文章,但想完全了解每个步骤在做什么。

git undo all uncommitted or unsaved changes

git reset

“这将取消登台您可能已经使用git add登台的所有文件”,取消登台是什么意思?

这是否意味着删除所有添加的文件?

git checkout .

“还原所有本地未提交的更改(应在回购根目录中执行)”

什么被认为是根?如果我在分支机构A上并且要忽略分支机构A上所有未提交的更改,那么分支机构A是否被视为根目录?

git clean -fdx

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

这是删除我的文件吗?包括被忽略的文件?如果忽略的文件没有更改怎么办?

我只是想回到我的上一次提交,而不用担心之后的任何更改。最简单,最安全的方法是什么?

3 个答案:

答案 0 :(得分:3)

一个人通常在想到时会这样做,我不想看到我面前的东西,我想像上一版一样把工作树上的一切都拿走并忘记其他所有内容:

git reset --hard

请谨慎使用:工作树将成为您正在使用的修订版本的方式,工作树和索引中的所有更改都将被丢弃,因此您将不再看到它们。

答案 1 :(得分:2)

您可以(从您的回购根目录开始)

git checkout HEAD -- .

或替代(如eftshift0Code-Apprentice在其答案中所建议的那样)

git reset --hard HEAD

这两个命令都将以最后一次提交的状态还原文件。

警告:此操作不可撤消。如果您对这些失败的更改的将来使用有丝毫疑问,最好stash进行使用:

git stash

(并有可能对其进行检查或以后再使用)


关于您考虑的其他命令,git reset(此处暗指HEAD)将“仅”从索引中获取所有更改,而不是从工作树中获取所有更改。因此,您不需要的更改仍将保留在文件中,只是为下一次提交而暂存。

请注意git clean -fdx,如果使用不当,这将是一个危险的命令,因为它将删除所有未跟踪的文件。它有它的用途,但是在您描述的情况下(使项目处于最后一次提交的状态),这不是您所需要的。

答案 2 :(得分:2)

  

下台意味着什么?

“未登台”是指将更改从索引中删除。索引是您在提交更改之前进行更改的位置。取消登台不会删除您的工作目录中的任何文件或撤消任何更改。

  

什么是根?

在这里,“根”是指项目的基本目录。它与分支或提交无关。

  

我只是想回到我的上一次提交,而不用担心之后的任何更改。最简单,最安全的方法是什么?

丢弃所有本地更改的最简单方法是

git reset --hard HEAD