在Git下恢复

时间:2012-05-01 02:42:18

标签: git git-checkout

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

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

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

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

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

如何完全回到舞台

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

3 个答案:

答案 0 :(得分:5)

查看此主题:How do I revert all local changes in Git managed project to previous state?

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

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

答案 1 :(得分:1)

要确保我首先理解你的问题,但我相信

git reset --hard

您正在寻找的命令。

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

答案 2 :(得分:0)

GIT的一个独特而有用的方面是你有一个存储库和一个工作目录,而且不需要相同。作为开发人员,您经常会同时发生多种事情。一对准备提交的文件;几个文件几乎准备好了,一些文件用于测试,一些文件带有一些注释/想法等等。通过GIT,您可以决定要保存什么以及何时保存。添加并提交您想要的内容。处理其他事情,添加和提交。等等。如果在提交你的东西的过程中你最终得到了你不需要的东西,那么就有一个简单的解决方案:

git status
rm <trash>

'git status'可让您看到非常清楚您决定不添加的内容。并且'rm trash'摆脱了被证实为垃圾的东西。

两步优于一步。