2012-05-01 77 views
2

当我运行'git checkout'时,我也想删除提交后创建的所有其他文件。在Git下恢复

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

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

然后我跑git add .git checkout,但新的文件和目录未删除。

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

我怎样才能回到舞台完全

谢谢您的时间和阅读我的问题。

+0

你的问题有点不清楚,你应该尽量让事情更清楚。如果您正在使用教程,请告诉我们您卡在哪里。如果没有,也许你应该阅读一个。 – Simon

回答

5

退房此线程:How do I revert all local changes in Git managed project to previous state?

由于Thr4wn笔记,git reset --hard将解决您的特定问题。但是,正如上面链接的线程所指出的那样,它不会删除未跟踪的文件:它仅仅因为您之前运行过git add而删除了第二个文件。

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

+0

'git clean -fd'正是我一直在寻找的!谢谢!但是人们并不经常使用这个命令? – user1350338

+0

没问题。命令删除的文件会永久删除,所以我想这不是常用的。我个人从来没有使用它。 –

1

BE CARFUL,以确保我第一次明白你的问题,但我相信,

git reset --hard 

是你正在寻找的命令。

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

0

GIT的独特和有用的方面之一是你有一个存储库和一个工作目录,他们不需要是相同。作为一名开发人员,您经常会同时发生多件事情。准备提交的一对文件;一对夫妇档案几乎准备好了,一对夫妇档案在那里进行测试,几个档案和一些笔记/想法等等。有了GIT,你可以决定你想要保存什么以及什么时候保存。添加并提交你想要的。处理其他内容,添加和提交。等等。如果让你的东西的过程中犯你最终得到的东西,你不需要,那么有一个简单的解决方案:

git status 
rm <trash> 

的“git的状态”可以让你看到很清楚你已经什么由决定不添加创建。而'rm trash'摆脱了被证实垃圾的东西。

两个步骤比一个更好。