2013-10-22 51 views
0

究竟是什么区别?git-reset与git-clean的区别

我的目标是把工作树完全恢复到当它说“没有变化”的状态 - 没有修改或删除,没有新的未跟踪文件,什么都没有。

我不关心的.gitignore-ED文件。

+0

所以要回到最后的好提交和摆脱未跟踪的文件我必须运行2命令? 'git reset --hard HEAD'和'git clean -f'? – Geo

回答

4
git-reset 

将当前HEAD重置为指定状态。

为如:git reset --hard HEAD^ - 这将删除前提交

git-clean 

使用,如果你想放弃所有未提交的更改从工作目录

2

删除未跟踪的文件/目录:

git reset --hard head 

这将基本上恢复Git知道的所有文件到他们上次提交的状态。

如果你想删除所有的Git不知道这些文件:

git clean -dxf 

这将删除被忽略或不跟踪一切。

+0

我的测试服务器上有一个挂钩,当任何人推送回购服务器时,挂钩会自动从回购中拉出。但是,如果测试服务器上的工作树不干净,它会中止。所以要重置树并返回到最后一个好提交并摆脱未跟踪的文件,我必须运行2个命令:'git reset --hard HEAD'和'git clean -f',对不对? – Geo

+0

只要'git reset --hard head'应该可以工作。 Git不会抱怨未跟踪的文件。 – Abizern

+0

除非他们冲突? – Geo