转 git 恢复 某个文件版本

原创
2015/01/16 23:14
阅读数 5.3K

描述
    之前一直没有用到这个功能,最近手误改错了一个文件,其实完全可以手动改回来,但是由于使用git,那么就要利用她所带的“高大上”的功能啊。
   google了一下命令,都是一样的方法,引用如下:


    但是自己实际测试了一下,发现文件根本没有改动,只是有unstaged commit的提示(说明一下,我是在windows环境下使用git客户端,linux不知道是不是同样的问题),如下图:

并且,一旦执行“git add .”,所有暂存区中的变化全都消失了。十分纠结,测试了很多次。后来仔细看了一下上图的英文,尝试了一下再执行git checkout命令试试,因为这个命令平时只适应于将文件恢复到上次递交的状态,而不能选择递交的版本。

虽然执行完毕后什么提示都没哟,但是查看文件可以看到,文件已经被修改为历史版本了。

总结
   git将单个文件恢复到历史版本的正确方法如下:
   git reset commit_id 文件路径
   git checkout -- 文件路径


转帖后记:

git 可以按照每个文件查询commit

每个commit 其实都是一个 技术文件修改的集合。


使用tortoisegit 恢复文件的方法是:


展开阅读全文
git
打赏
0
5 收藏
分享
加载中
Hardlighting博主

引用来自“jianglu188”的评论

--hard后面可以跟文件名 这样不用checkout
--hard 好像不能跟特定的commit??
2015/01/17 21:50
回复
举报
--hard后面可以跟文件名 这样不用checkout
2015/01/17 12:27
回复
举报
Hardlighting博主

引用来自“Yi_Zhi_Yu”的评论

git reset --hard直接全部恢复,也不用再checkout,不过这样风险略大,仅供参考
项目里面用的比较多的还是几个文件的恢复 不过多谢提醒
2015/01/17 09:49
回复
举报
git reset --hard直接全部恢复,也不用再checkout,不过这样风险略大,仅供参考
2015/01/17 08:34
回复
举报
更多评论
打赏
4 评论
5 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部