关于git checkout:在Git下恢复

Reverting under Git

当我运行"git checkout"时,我还希望删除提交之后创建的所有其他文件。

但我找不到路。这是我测试的东西,

我创建了一个目录test,并在提交之后创建了一个文件test/test.txt

然后我运行git add .git checkout,但是新的文件和目录没有被删除。

即使我将命令git checkout作为回滚,为什么新文件仍然存在?

我怎样才能完全回到舞台上?

感谢您抽出时间阅读我的问题。


检查这个线程:如何将Git托管项目中的所有本地更改恢复到以前的状态?

正如thr4wn所指出的,git reset --hard将解决您的特定问题。但是,正如上面链接的线程中所指出的,它不会删除未跟踪的文件:它只会删除第二个文件,因为您以前运行过git add。

git clean -fd似乎是一种解决方案,它删除了提交之后添加的所有内容(这意味着您将丢失所有这些文件)。


小心点,确保我先理解你的问题,但我相信

1
git reset --hard

是您要查找的命令。

这个命令的作用是不可逆地删除自上次提交以来所做的所有更改。


Git的一个独特和有用的方面是,您有一个存储库和一个工作目录,它们不需要在相同的地方。作为一个开发人员,您经常同时发生多个事情。准备好提交的几个文件;准备好的几个文件,准备测试的几个文件,有一些注释/想法的几个文件,等等。使用Git,您可以决定要保存什么以及何时保存。添加并提交您想要的内容。做其他事情,添加和提交。等等。如果在提交您的资料的过程中,您最终得到了不需要的资料,那么有一个简单的解决方案:

1
2
git status
rm <trash>

"git状态"让您可以非常清楚地看到"决定不添加"所创建的内容。"RM垃圾箱"可以清除确认为垃圾的物品。

两步胜于一步。