Git 代码版本还原方法
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新。请访问我的个人网站获取这篇文章的最新内容,Git 代码版本还原方法
在使用 Git 管理自己的代码和资料时,难免会遇到意料之外的事。比如误操作,将当前的分支删除;或者重置到某个版本,然后发现自己想要的代码找不到了;又或者需要还原到之前提交的某个版本,但是那个版本已经被重置过,在历史中找不到了。
忙活了大半天,发现辛苦换来的成果都没了,遇到这种情况几乎是要崩溃的,不过幸好我们还有 Git。
一般情况下,如果在版本的分支历史上,还可以找到想要的那个版本,那通常比较简单,只要选择重置到该版本就可以了。

重置类型有三种模式可供选择,soft、mixed 和 hard 的区别如下:
soft 不改动工作区和索引
假设有一些 commits
A - B - C (master)
HEAD 指向 C, 并且暂存区(stage,或称为 index)matches C.
当使用 git reset --soft B 时,master 和 HEAD 指向 B,但是依然保留了 C 添加跟踪的文件,此时会将这些文件放入暂存区中,显示为已缓存。同时工作区中修改的文件,显示为未缓存。
mixed 保持工作区不变,重置索引
当使用 git reset --mixed B 时,master 和 HEAD 指向 B,这时候 C 添加跟踪的文件仍然会在,但是会显示为未缓存(不是版本控制),而当前工作目录中的修改内容,仍然会在,显示未缓存的状态
(如果不知道怎么选,默认使用 mixed)
hard 重置索引和工作区(丢弃所有本地变更)
当使用 git reset --hard B 时,C 添加跟踪的文件,以及当前工作目录中的修改内容,都会丢失。
如果比较悲剧,分支历史上已经找不到想要的那个版本的代码了,但是别急,只要是有提交的代码,Git 都能找回来。
我在 Windows 下使用 TortoiseGit,只要右键找到显示引用记录,就能找到所有的操作记录,然后选择想要的版本,重置过去就可以了。即便是现在这一步的重置操作选错了版本也没事,因为这个操作也被记录下来,你还是可以重置到正确的版本。

看到这张图,是不是一股暖流涌上心头,终于找回来了。

曾经尝试过用命令来操作,但是试了很久都没成功,只好放弃,改用 TortoiseGit 来操作。TortoiseGit 在 Windows 下几乎是最好用的 Git GUI 工具了。
自从使用了 Git,只要有 commit 过的代码,再也不担心会丢了,尽情的 commit 吧。
Git 代码版本还原方法的更多相关文章
- git 代码托管使用方法
Git代码托管 1 准备材料 在coding,github这些代码托管网站上申请一个账户. Linux平台什么需要一个git,如ubuntu 需要 $ sudo apt-get install git ...
- 搭建企业git代码版本管理所需工具
此片文章纯属记录一下使用gitlab搭建私有git版本管理的一些工具及概念. 先记录一下概念 git 是一种版本控制系统,是一个命令,是一种工具 github 是一个基于git实现 ...
- git代码版本回退
git log 用于查看我们修改提交的快照记录(commit记录),然后会有个commit修改记录的id编号,该命令显示从最近到最远的提交日志,我们可以看到3次提交记录,如下: git checkou ...
- git 代码版本回退
1.查看 commit id 2.git reset --hard "dfdfdfdf" // commit id 3.git push -f -u origin 2.1.0 // ...
- git代码库误操作还原记录
先做一些前情提要: 我们项目使用git作为代码管理,同时为了操作更方便,安装了乌龟git(tortoiseGit)工具.以下几乎所有操作都是在乌龟git上进行. 我们的项目是分阶段完成的,在完成上一阶 ...
- 【git】远程仓库版本回退方法
1 简介 最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客. 2 问题 如果提交了一个错误的版本,怎么回退版本? 如果提交了一个错误的版本到远程分支,怎么回退远程分支 ...
- [Git高级教程(二)] 远程仓库版本回退方法 - 梧桐那时雨 - CSDN博客
1 简介 最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客. 2 问题 如果提交了一个错误的版本,怎么回退版本? 如果提交了一个错误的版本到远程分支,怎么回退远程分支 ...
- IDEA中Git的更新/提交/还原方法
记录一下在IDEA上怎样将写的代码提交到GitHub远程库: 下面这个图是基本的提交代码的顺序: 1. 将代码Add到stage暂存区本地修改了代码后,需先将代码add到暂存区,最后才能真正提价到gi ...
- 【技术博客】Git Flow模型管理代码版本
参考GIT版本管理:Git Flow模型,在此基础上加入了自己的理解,增加人员分工和相应代码,并根据本次项目的实际情况进行相应修改. 在本学期的软件工程开发过程中,我们从alpha阶段就使用了git ...
随机推荐
- hdu2064
hdu2064 汉诺塔变形,数学题 #include<stdio.h> ]; int main(){ A[]=; int i; ;i<=;i++){ A[i]=*A[i-]+; } ...
- BZOJ2460,LG4570 [BJWC2011]元素
题意 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有 ...
- asm数据文件迁移(asm–>asm)
rman迁移操作 [oracle@localhost oradata]$ rman target / Recovery Manager: Release 10.2.0.3.0 - Producti ...
- JS判断IP的正则表达式
<html> <head> <title>最简洁的IP判断正则表达式</title> <meta http-equiv="Content ...
- Tomcat 自动化部署
Tomcat 自动化部署脚本 使用方法: ./autodeploy.sh test 其中autodeploy.sh 为脚本的文件名, test为war的文件名. #!/bin/sh now=`date ...
- R(7): data.table
这个包让你可以更快地完成数据集的数据处理工作.放弃选取行或列子集的传统方法,用这个包进行数据处理.用最少的代码,你可以做最多的事.相比使用data.frame,data.table可以帮助你减少运算时 ...
- Keepalived stable tarball
Keepalived stable tarball Keepalived for Linux - Version 1.3.5 - March 19, 2017 Keepalived for Linux ...
- C#利用zxing.net操作二维码和条形码
下载地址:http://zxingnet.codeplex.com/ zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便. 首先下载二进制dll文件,引入工程: 代码: usin ...
- linux 静态库文件
1.生成目标文件 gcc -o mylib.o -c mylib.c 2.生成静态库文件 ar rcs libmylib.a mylib.o 查看库信息: nm libmylib.a //====== ...
- freeswitch自定义模块的wiki地址
http://wiki.freeswitch.org/wiki/Authoring_Freeswitch_Modules