使用Git丢弃未提交的更改的最佳方法是什么。
我读了这篇文章,但想完全了解每个步骤在做什么。
git undo all uncommitted or unsaved changes
git reset
这是否意味着删除所有添加的文件?
git checkout .
什么被认为是根?如果我在分支机构A上并且要忽略分支机构A上所有未提交的更改,那么分支机构A是否被视为根目录?
git clean -fdx
这是删除我的文件吗?包括被忽略的文件?如果忽略的文件没有更改怎么办?
答案 0 :(得分:3)
一个人通常在想到时会这样做,我不想看到我面前的东西,我想像上一版一样把工作树上的一切都拿走并忘记其他所有内容:
git reset --hard
请谨慎使用:工作树将成为您正在使用的修订版本的方式,工作树和索引中的所有更改都将被丢弃,因此您将不再看到它们。
答案 1 :(得分:2)
您可以(从您的回购根目录开始)
git checkout HEAD -- .
或替代(如eftshift0和Code-Apprentice在其答案中所建议的那样)
git reset --hard HEAD
这两个命令都将以最后一次提交的状态还原文件。
警告:此操作不可撤消。如果您对这些失败的更改的将来使用有丝毫疑问,最好stash
进行使用:
git stash
(并有可能对其进行检查或以后再使用)
关于您考虑的其他命令,git reset
(此处暗指HEAD
)将“仅”从索引中获取所有更改,而不是从工作树中获取所有更改。因此,您不需要的更改仍将保留在文件中,只是为下一次提交而暂存。
请注意git clean -fdx
,如果使用不当,这将是一个危险的命令,因为它将删除所有未跟踪的文件。它有它的用途,但是在您描述的情况下(使项目处于最后一次提交的状态),这不是您所需要的。
答案 2 :(得分:2)
下台意味着什么?
“未登台”是指将更改从索引中删除。索引是您在提交更改之前进行更改的位置。取消登台不会不删除您的工作目录中的任何文件或撤消任何更改。
什么是根?
在这里,“根”是指项目的基本目录。它与分支或提交无关。
我只是想回到我的上一次提交,而不用担心之后的任何更改。最简单,最安全的方法是什么?
丢弃所有本地更改的最简单方法是
git reset --hard HEAD