Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >git 恢复被删除的文件

git 恢复被删除的文件

作者头像
夏洛克的猫
发布于 2018-10-18 04:03:35
发布于 2018-10-18 04:03:35
5.1K00
代码可运行
举报
文章被收录于专栏:移动开发移动开发
运行总次数:0
代码可运行

刚接触 git 的时候,当碰到之前删除某个文件(比如图片)后面开发又需要恢复的时候,会采取非常笨的方法。从某一个文件存在的 commit 切换出一个新的分支,再将需要的某个文件拷贝出来。像是图片类的文件有时候会直接叫 UI 设计师再发一份。这种需要恢复文件情况不多时(好像确实也不是太多,目前本人遇到这种情况还是极少的),其实这种操作还好。但情况多的时候,还是挺浪费时间的。

git 其实本身就可以恢复被删除的文件。几个命令就可以了。

大多数我们是不知道在何时删除了某个文件,通过下面这个命令我们可以查看在哪个 commit 中删除了哪些文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git log --diff-filter=D --summary

执行这个命令后效果如下:

比如我想恢复 ic_selected.png 这个文件,我们可以看到删除该文件对应的 commit id :f541888b0e7255cc6aa22a277f3dd9fe5502e5e2

接下来我们执行下面这个命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git checkout $commit~1 filename

这个命令会检出该 commit 的上一个提交中的文件,因为我们是在该 commit 中删除的文件,所以需要在上一个 commit 才能恢复出文件。

执行该命令后的效果

可以看到,执行完我们已经恢复了我们需要的文件。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
常用的Git Tips
一、Configuration:配置 列举所有的别名与配置 git config --list Git 别名配置 git config --global alias. git config --global alias.st status 设置git为大小写敏感 git config --global core.ignorecase false 二、Help:常用的辅助查询命令 在git 命令行里查看everyday git git help everyday 显示git常用的帮助命令 git help -g 获取Git Bash的自动补全 ~/.git-completion.bash && echo '[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash' >> ~/.bashrc 设置自动更正 git config --global help.autocorrect 1 三、Remote:远端仓库配置 获取所有远端引用配置 git remote 或者 git remote show 修改某个远端的地址 git remote set-url origin URL Repo 查看当前仓库中的所有未打包的objects和磁盘占用 git count-objects --human-readable 从object数据库中删除所有不可达的object git gc --prune=now --aggressive 四、文件类操作 ,Cache:缓存,Track:文件追踪, 展示所有被追踪的文件 git ls-files -t 展示所有未被追踪的分支 git ls-files --others 展示所有被忽略的文件 git ls-files --others -i --exclude-standard git check-ignore* git status --ignored Manipulation:操作 停止追踪某个文件但是不删除它 git rm --cached <file_path 或者 git rm --cached -r <directory_path 强制删除未被追踪的文件或者目录 git clean -f git clean -f -d git clean -df 清空.gitignore git clean -X -f Changes:修改 Info:信息查看 查看上次提交之后的未暂存文件 git diff 查看准备用于提交的暂存了的修改的文件 git diff --cached 显示所有暂存与未暂存的文件 git diff HEAD 查看最新的文件版本与Stage中区别 git diff --staged dd:追踪某个修改,准备提交 Stage某个文件的部分修改而不是全部 git add -p Reset:修改重置 以HEAD中的最新的内容覆盖某个本地文件的修改 git checkout -- <file_name> Stash:贮存 Info:信息查看 展示所有保存的Stashes git stash list Manipulation:操作 Save:保存 保存当前追踪的文件修改状态而不提交,并使得工作空间恢复干净 git stash 或者 git stash save 保存所有文件修改,包括未追踪的文件 git stash save -u 或者 git stash save --include-untracked Apply:应用 应用任何的Stash而不从Stash列表中删除 git stash apply <stash@{n}> 应用并且删除Stash列表中的最后一个 git stash pop 或者 git stash apply stash@{0} && git stash drop stash@{0} 删除全部存储的Stashes git stash clear 或者 git stash drop <stash@{n}> 从某个Stash中应用单个文件 git checkout <stash@{n}> -- <file_path> 或者 git checkout stash@{0} -- <file_path> Commit:提交 检索某个提交的Hash值 git rev-list --reverse HEAD | head -1 Info:信息查看 List:Commit列表 查看自Fork Master以来的全部提交 git log --no-merges --stat --reverse master.. 展示当前分支中所有尚未合并到Master中的提交 git cherry -v master 或者 git cherry -v master <branch-to-be-merged> 可视化地查看整个Version树
竹清
2018/08/31
7190
原创 | Git操作文件的时候手贱了,怎么恢复?
我们在使用git的过程当中很难避免的一点就是手贱,因为人嘛总有犯错疏忽的时候,有时候一不小心就操作错了。我也经常遇到这种情况,所以这时候对git的了解和掌握就非常重要,即使操作错了,我们也可以通过git还原到我们希望它变成的状态。下面我们来看几个例子,来实际体验一下git的强大。
TechFlow-承志
2020/09/24
7400
原创 | Git操作文件的时候手贱了,怎么恢复?
Git找回回滚后的内容和删除的文件
欢迎点击上方"AntDream"关注我 如果我已经执行了`git reset --hard XXX`,之前的`commit`的内容还能找回来吗?首先,经过之前的学习,我们起码知道,执行完 reset回滚commit以后,之前的commit其实没有被删除,肯定还在的。要找回之前的 commit 的内容,那我们势必得知道对应的commit 的SHA-1值吧,这个时候用git log是看不到的。之前我们曾经提到过,就是 .git目录下有一个 logs 目录,里面记录了所有HEAD改变的记录,包括分支操作(新建、
AntDream
2019/07/16
3.6K0
Git之删除文件 git rm 的基本使用
小提示:先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。
兮动人
2021/06/11
1.5K0
给自己点时间再记记这200条Git命令
image.png 我平时使用 Git 的时候,很多的 Git 命令我都不是很常用,工作中一般我们会配合一些可视化工具,或者编辑器自带的一些插件去维护 Git 仓库,但是我们也要记得一些常用 Git
wscats
2020/06/06
1.2K0
git使用详细总结
本文首先简单介绍一些git的几个区域和区域之间的命令,然后是git中一个比较重要的概念分支的相关操作,接着是打标签的一些相关内容,最后是对提交历史的一些查看和一些其他命令。
程序员田同学
2022/01/04
3020
git安装教程和git命令使用详解
原文出处:涂根华的博客 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活, 干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网 速慢的话,就纳闷了。 Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是
挑战者
2018/06/29
8690
Git Cheat 2
整理一下经常忘记的Git命令 (版本v2) http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html?utm_source=tool.lu
happy123.me
2018/06/04
5540
代码管理的git--应对百变的需求
git 可以使用多个分支同时进行开发。一般情况,在开发团队中会有开发版本分支(dev),发布版本分支(release)。再日常项目中,我一般还会添加一个预发布分支(pre-release)。作为预发布代码的测试。
写PHP的老王
2019/08/12
5760
代码管理的git--应对百变的需求
你可能不知道的15个 Git 命令[每日前端夜话0xF5]
Git 有时可能会令人生畏。因为有太多的命令和细节需要学习。不过虽然文档的内容很多,但阅读起来还是很轻松的。一旦你克服了最初不堪重负的感觉,就会感觉到有明显进展。以下是你可能还不知道的 15 个 Git 命令的列表,希望它们能帮助你熟练掌握Git。
疯狂的技术宅
2019/12/11
8240
【Git笔记3】关于撤销、删除、恢复的那些事儿
在跻身于“国庆抢票大战”的我们,不要忘记学习,今天接着上篇 【Git笔记2】必知习惯和如何版本回退,继续开干!一起来瞅瞅如何撤销没有add的修改,如何撤销以及add到暂存区的修改,如何删除文件,如何恢复版本库中删除的文件,以及如何恢复工作区的文件。
小小詹同学
2019/11/11
2.3K0
从Git仓库中恢复已删除的分支、文件或丢失的commit
比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支
用户8705050
2021/06/08
3.8K0
Git版本控制 —— IDE工具(IDEA)
然后使用File --> Settings -->  Version Control --> Git配置客户端安装目录
爱撸猫的杰
2019/03/28
4.1K0
Git版本控制 —— IDE工具(IDEA)
常见的git命令
https://blog.csdn.net/litongqiang/article/details/107388918 https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
leader755
2022/03/09
2530
Git总结
git在本地分为三个区域,工作区、暂存区和本地仓库,具体情况如下: git的一般操作就是本地代码的修改提交回滚,以及与远程仓库的拉取、合并、提交等。 git fetch   从远程仓库上抓取分支到本机
欠扁的小篮子
2018/04/11
6640
Git总结
版本控制工具——Git常用操作(下)
摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复现场的操作。学会以后已经足够我们使用Git参加协作开发了,但是在开发的过程中难免会出错,本文主要介绍版本控制的过程中出错了的场景,以及Git开发的一些技巧,让我们用的更流畅。
机智的程序员小熊
2019/01/10
9940
版本控制工具——Git常用操作(下)
repo 和git的用法
repo init -u git@192.168.1.11:i700t_60501010/platform/manifest.git-b froyo_almond -m M76XXTSNCJNLYA60501010.xml
awwewwbbb
2022/04/26
9120
Git进阶:你不知道的git stash 和 git worktree
部门从SVN签到了Git, 总算跟上了潮流的脚后跟. 其实从技术的角度来说, SVN没有那么烂. 但是从当今的角度来说, Git已经代表潮流, SVN已经没落并将持续没落下去, 继续把宝贵的时间投入到SVN这种注定没落的技术上, 实在是得不偿失.
望天
2019/10/02
4.2K0
Git进阶:你不知道的git stash 和 git worktree
Git Bash⭐一、安装软件,与Git Bash基础命令
remote: error: Out of memory, malloc failed (tried to allocate 429955019 bytes)
星河造梦坊官方
2024/08/15
5580
Git Bash⭐一、安装软件,与Git Bash基础命令
【Git#1】初识 git(配置 & 基本认识 & 文件操作)
在工作或学习时经常遇到这样的情况:我们在编写各种文档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出一个副本,比如:
IsLand1314
2025/04/19
3030
【Git#1】初识 git(配置 & 基本认识 & 文件操作)
相关推荐
常用的Git Tips
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验