解决SVN误操作--使用Git仓库中恢复已删除的分支、文件或丢失的操作
2017-02-22 14:12
976 查看
timtiandeiMac:WelfareManager timtian$ git branch recover_branch[tzfhead] 99fbfd5 fatal: 'recover_branch[tzfhead]' is not a valid branch name. timtiandeiMac:WelfareManager timtian$ git reflog warning: refname 'HEAD' is ambiguous. bc9ef04 HEAD@{0}: checkout: moving from HEAD to master bc9ef04 HEAD@{1}: checkout: moving from master to HEAD bc9ef04 HEAD@{2}: pull origin master: Fast-forward c68c172 HEAD@{3}: checkout: moving from HEAD to master bc9ef04 HEAD@{4}: checkout: moving from master to HEAD c68c172 HEAD@{5}: checkout: moving from 183b72cad197d43a950de25782a453a98b04e2af to master 183b72c HEAD@{6}: pull origin master: Merge made by the 'recursive' strategy. 99fbfd5 HEAD@{7}: commit (merge): 22222 6af9894 HEAD@{8}: commit: 111 17c48b3 HEAD@{9}: commit: 4 f472172 HEAD@{10}: commit: 分享渠道,编辑框架 9e9f0b0 HEAD@{11}: commit: E方案方案列表,商品选择、商品反馈 9533669 HEAD@{12}: revert: Revert "二维码文字" e161dc0 HEAD@{13}: checkout: moving from master to e161dc01746cd0a855465373b57115fbf7368a4d c68c172 HEAD@{14}: pull origin master: Merge made by the 'recursive' strategy. 8690099 HEAD@{15}: checkout: moving from ef76dc3c813ae8e091a14b0ffe06e161eb3a3c9e to master ef76dc3 HEAD@{16}: checkout: moving from master to ef76dc3c813ae8e091a14b0ffe06e161eb3a3c9e 8690099 HEAD@{17}: commit: pod SHA c43c452 HEAD@{18}: commit: pod > 恢复到指定id 文件 通过git branch recover_branch[新分支] commit_id 来建立一个新的分支 timtiandeiMac:WelfareManager timtian$ git branch recover_branch[tzf11] 99fbfd5 fatal: 'recover_branch[tzf11]' is not a valid branch name. timtiandeiMac:WelfareManager timtian$ git branch tzf11 99fbfd5 fatal: A branch named 'tzf11' already exists. timtiandeiMac:WelfareManager timtian$ git branch tzf11 99fbfd5 timtiandeiMac:WelfareManager timtian$
在使用Git的过程中,有时可能会有一些误操作
比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支
结果造成本地(远程)的分支或某些commit丢失
可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除
一般情况下,gc对那些无用的object会保留很长时间后才清除的
reflog是git提供的一个内部工具,用于记录对git仓库进行的各种操作
可以使用git reflog show或git log -g命令来看到所有的操作日志
恢复的过程很简单:
通过git log -g命令来找到我们需要恢复的信息对应的commit_id,可以通过提交的时间和日期来辨别。一个好的办法是运行:1、git log –since=”2 weeks ago” – myfile 可以2个星期期间的myfile历史;2、git log –branches=”develop” 可以查看develop的commit
通过git branch recover_branch[新分支] commit_id 来建立一个新的分支
这样,我们就把丢失的东西给恢复到了recover_branch分支上了。
Q:如果是不小心执行了git reset,还有办法取消吗?
A:git reflog 查看操作历史,找到之前 HEAD 的 hash 值,然后 git reset –hard 到那个 hash 即可。
Q:怎样找回历史版本中删除的文件?
A:先确定需要恢复的文件要恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么
git checkout [commit_id] – 就可以恢复。
相关文章推荐
- 从Git仓库中恢复已删除的分支、文件或丢失的commit
- 从Git仓库中恢复已删除的分支、文件或丢失的commit
- 从Git仓库中恢复已删除的分支、文件或丢失的commit
- 从Git仓库中恢复已删除的分支、文件或丢失的commit
- 从Git仓库中恢复已删除的分支、文件或丢失的commit[转]
- 从Git仓库中恢复已删除的分支、文件或丢失的commit
- git在本地仓库直接使用rm彻底删除文件,服务端还是存在。(已解决)
- 从Git仓库中恢复已删除的分支或丢失的commit
- 从Git仓库中恢复已删除的分支或丢失的commit
- 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题
- git仓库管理分支误操作 导致文件丢失
- 从Git仓库中恢复已删除的分支或丢失的commit
- 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题
- git的安装和使用Mac版本,本地代码仓库文件的删除和重新导入代码
- 使用git删除远程仓库文件
- 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件
- git基本操作(fetch,pull,分支使用,初始化项目,恢复)
- 初次使用 git 的“核弹级选项”:filter-branch 从仓库中删除文件
- Eclipse恢复已删除的文件和代码、svn使用了还原,但本地的没有提交找回没提交代码的方法
- eclipse与myeclipse恢复已删除的文件和代码、svn使用还原,但本地的没有提交找回