分类: 系统运维
2012-12-25 18:04:06
同事的一个项目做build 做完后发现working dir里 原先的文件全没了 生成一堆为tar包准备的文件 目录等等 杂七杂八的玩意儿 在没有了解到git reset 还有checkout之前 我都是直接把working dir掉 然后重新clone一个出来 呵呵 现在想想还是蛮无聊的
git reset可以让repo, working dir重置为一个特定的 已知的状态 大多数情况下是想要重置到之前的某个commit的点上 当然也可以用revert什么的 但是revert会再做一次提交 这样的结果可能并不是希望的 使用git reset可以根据自己的需要选择是否更新working dir, index等 当然它也不会引入一次提交
git reset常用的选项包括:
--soft 只影响HEAD 把HEAD指向某个ref 而index和working dir保持原样
--mixed (这个是默认的选项)影响HEAD 还有index
--hard 影响HEAD, index 以及working dir
例如开始提到的那种状况 可以用--hard选项(git reset --hard HEAD) 这样会丢掉working dir的修改 恢复到之前的状态 还有一种方法就是
git checkout .
git clean -f -d (删除working dir里没有被track的文件)