`
隐形的翅膀
  • 浏览: 497415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从Git仓库中恢复已删除的分支、文件或丢失的commit

 
阅读更多
在使用Git的过程中,有时可能会有一些误操作

比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支

结果造成本地(远程)的分支或某些commit丢失

可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除

一般情况下,gc对那些无用的object会保留很长时间后才清除的

reflog是git提供的一个内部工具,用于记录对git仓库进行的各种操作

可以使用git reflog show或git log -g命令来看到所有的操作日志

恢复的过程很简单:

1. 通过git log -g命令来找到我们需要恢复的信息对应的commit_id,可以通过提交的时间和日期来辨别。一个好的办法是运行:1、git log --since="2 weeks ago" -- myfile 可以2个星期期间的myfile历史;2、git log --branches="develop" 可以查看develop的commit

2. 通过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] -- <path_to_file>

就可以恢复
分享到:
评论

相关推荐

    Git仓库清除commit历史记录.docx

    在Git仓库管理中,有时出于隐私、安全或者代码版本重置等需求,我们可能需要清除commit历史记录,将仓库恢复到初次commit的状态。这个过程涉及到对Git仓库的深入操作,包括创建新分支、添加文件、删除旧分支以及强制...

    Git安装文件.zip

    `git branch` 命令用于列出、创建或删除分支,`git checkout` 切换或创建分支。`git merge` 用于合并分支,通常在开发完成后将分支合并回主分支(如master或main)。 协同开发时,`git pull` 用于从远程仓库拉取并...

    git gui详细文档,可视化界面git全理解

    选择“Create new Repository”来初始化一个新的Git仓库。之后,输入仓库名称并创建。此时,你会在该文件夹下看到一个名为`.git`的隐藏文件夹,这是新创建的仓库。 ##### 文件操作 1. **创建文件**:例如,创建一...

    git-master

    - **git checkout**:切换分支或恢复工作目录文件。 - **git merge**:将一个分支的改动合并到当前分支。 5. **远程操作**: - **git remote**:管理和查看远程仓库信息。 - **git push**:将本地的提交推送到...

    git图文教程中文教程

    3. **创建与克隆仓库**: 学习如何在本地创建新的Git仓库,以及从远程仓库(如GitHub)克隆项目。`git init`用于初始化新仓库,`git clone`则用于复制远程仓库到本地。 4. **提交与版本控制**: `git commit`用于保存...

    git新手操作手册,包含文件/文件夹添加、删除,分支创建、合并、切换、拉取、推动等操作

    - **删除文件**:`git rm`用于移除文件,如`git rm test.txt`,之后提交更改(`git commit -m "删除test.txt文件"`). - **删除文件夹**:`git rm -r test/`删除`test`文件夹及其内容,同样需要提交更改。 7. **...

    Git原理及范例详解

    3. 提交文件:使用 `git commit` 命令来将文件提交到仓库。 4. 查看状态:使用 `git status` 命令来查看仓库的状态。 5. 查看日志:使用 `git log` 命令来查看仓库的提交历史。 Git 的分支机制使得开发者可以在...

    git尚硅谷笔记.pdf

    - `git rm --cached &lt;file&gt;`:仅从暂存区移除文件,但不会删除工作区中的文件。 - **提交更改** - `git commit -m "Commit message"`:提交暂存区中的文件到仓库,并附带提交信息。 4. **版本查看** - `git log...

    git恢复删除的分支及内容的方法

    幸运的是,Git提供了恢复已删除分支及其中内容的方法。本文将详细介绍如何在Git中恢复删除的分支及其内容。 首先,我们需要了解删除分支的基本命令。在本地删除分支,可以使用`git branch -D 分支名`命令。这条命令...

    完全学会GIT+GITHUB+GIT+SERVER的24堂课

    Git是分布式版本控制系统,GITHUB是全球最大的开源代码托管平台,而Git Server则是用于搭建本地或私有Git仓库的服务端程序。这三者构成了开发者进行版本控制和协作开发的核心工具链。下面,我们将深入探讨这些知识点...

    git详解-PDF

    - **移除文件**:使用`git rm &lt;file&gt;`从仓库中删除文件。 - **移动文件**:使用`git mv &lt;oldname&gt; &lt;newname&gt;`重命名文件。 - **查看提交历史**: - **限制输出长度**:使用`git log --oneline`或`git log --...

    Git使用手册中文版

    在分支管理方面,`git branch`用于创建、查看和删除分支,`git checkout`则用于切换分支或恢复工作目录文件。`git merge`是用于合并分支的关键命令,而解决冲突可能是合并过程中常见的挑战。 对于高级用户,Git的...

    最好的git中文教程

    - **初始化Git仓库**:使用`git init`命令来创建一个新的Git仓库或初始化一个现有的目录作为Git仓库。 - **版本控制实践**:通过实际项目练习Git的基本操作,例如创建新文件、修改现有文件、添加文件到暂存区、提交...

    浅析git server“丢失”commit问题

    在Git的使用过程中,有时可能会遇到git server“丢失”commit的问题,这往往会给开发团队带来困扰,因为丢失的commit可能包含重要的代码更改。本篇文章主要分析了这种情况的原因和解决策略。 1. **问题现象** 当某...

    git git git2

    1. **初始化Git仓库**:使用`git init`命令可以将现有目录转换为Git仓库。 2. **添加文件到暂存区**:`git add &lt;file&gt;`或`git add .`可以将改动添加到暂存区,准备提交。 3. **提交更改**:`git commit -m "commit ...

    Git使用随笔 Git原理、远端仓库、本地仓库、基本操作、问题解答

    - 如果文件只是从工作目录中删除,可以使用`git rm --cached &lt;file&gt;`只从版本库中移除文件,保留工作目录中的文件。 10. **查看、创建、切换、删除分支** - 使用`git branch`查看当前仓库的所有分支。 - 使用`...

    Git的安装与使用

    Git仓库的初始化可以在文件夹中进行。通过在文件夹中右键选择Git Bash Here,打开命令窗口,使用git init命令初始化仓库。这会在当前文件夹下创建一个隐藏的.git目录,用来存放版本历史记录。如果删除这个目录,项目...

    git for windows中文语言包

    1. **初始化仓库**:使用`git init`命令在本地创建一个新的Git仓库。 2. **添加文件**:使用`git add`命令将文件添加到暂存区,例如`git add .`会添加所有更改。 3. **提交**:使用`git commit`命令保存暂存区的...

    git使用说明.rar

    2. **初始化仓库**: 使用`git init`命令可以将一个目录转变为Git仓库。 3. **添加文件**: `git add &lt;file&gt;`用于将文件添加到暂存区,`git add .`则会添加所有修改和新文件。 4. **提交更改**: `git commit -m ...

    Git 基础培训1

    `git rm`用于从仓库中删除已受控的文件,从跟踪列表中移除。 6. **Git diff** `git diff`命令显示工作目录中未被提交的更改。它可以让你看到哪些文件、哪些行被修改,方便检查和确认即将提交的更改。 7. **Git ...

Global site tag (gtag.js) - Google Analytics