Git命令之回退篇 git revert git reset

Git command之回退篇

欲练回退 必先了解:HEAD、index、WorkingCopy

HEAD: 当前所在的分支版本顶端的别名,也就是最新的一次commit. git commit 之后与HEAD一致

index: staging area,git add 之后放入该区域

WorkingCopy: 当前修改等操作所在区域,没有 git add 和 git commit 操作

git reset HEAD --file (单个文件)

可与git checkout --file配合

回退暂存区里的某个文件,还原为HEAD commit里该文件的状态,撤销从上一次commit之后所有的操作。或者说是从HEAD commit里重新拉到暂存区覆盖当前的(被add乱掉的)文件。但是working copy里没有任何变化。此时如果想丢掉working copy里的修改,执行git checkout --file.

git reset --hard HEAD

影响同下面介绍的<git reset --hard 目标版本号>,只是HEAD位置看起来没有变化。小技巧:上个版本用HEAD^或者HEAD~1,上上个版本HEAD^^或者HEAD~2,上100个版本HEAD~100

git reset --hard 目标版本号

版本号指:commit生成的hash码,可用 git log 命令查看

修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,最后需要用 git push -f 强推到远端

--hard参数将会blow out everything.它将重置HEAD返回到另外一个commit,重置index以便反映HEAD的变化,并且重置working copy也使得其完全匹配起来。

这是一个比较危险的动作,具有破坏性,数据因此可能会丢失!如果真是发生了数据丢失又希望找回来,那么只有使用:git reflog命令了。makes everything match the commit you have reset to.你的所有本地修改将丢失。如果我们希望彻底丢掉本地修改但是又不希望更改branch所指向的commit,则执行git reset --hard = git reset --hard HEAD.
i.e. don‘t change the branch but get rid of all local changes.另外一个场景是简单地移动branch从一个到另一个commit而保持index/work区域同步。这将确实令你丢失你的工作,因为它将修改你的work tree!

git reset --soft 目标版本号

--soft参数Git重置HEAD到另外一个commit,HEAD位置改变,但index,working copy都不会做任何变化,所有的在original HEAD和你重置到的那个commit之间的所有变更集都放在stage(index)区域中。

git reset --mixed 目标版本号

--mixed是reset的默认参数,也就是当你不指定任何参数时的参数。它将重置HEAD到另外一个commit,并且重置index以便和HEAD相匹配,但working copy不会被更改。所有该branch上从original HEAD(commit)到你重置到的那个commit之间的所有变更(未git add的操作)将作为local modifications保存在working area中,你可以接着coding,之后再进行git add, git commit.

总结:--hard --mixed(default) --soft 分别覆盖3个、2个、1个位置的代码,--mixed(默认的参数)只会保留working copy里的代码

git revert -n 目标版本号

  1. 与git reset不同的是,复制了一个目标版本(某个想要回退到的历史版本)加在当前分支的最前端。而git reset是HEAD指针跳到目标版本,但将跳过的版本丢弃掉了。
  2. use ‘git commit -m "the name of the new release" ‘ to commit

? use ‘git push‘ to push

git commit --amend

  1. 改写commit,包括改写提交的文件和追加文件到提交中。
  2. 还可以对这种改写回退,用git reflog得到相应的版本号,然后git reset --soft [email protected]{xxx}

原文地址:https://www.cnblogs.com/taylorluo/p/10792498.html

时间: 2024-11-05 20:41:15

Git命令之回退篇 git revert git reset的相关文章

【转载】git命令和svn的对比

首先,要明确的是,git和svn是完全不同的两种管理方式.他们的命令不是完全对等的. 下面只是一些相似方法的参考,而已. 参考 http://blog.csdn.net/chen198746/article/details/19117627 常用的svn与git命令对比如下: svnadmin create ------------------------------> git init svn co ------------------------------> git clone svn

你应该知道的基础 Git 命令

简介:这个快速指南将向你展示所有的基础 Git 命令以及用法.你可以下载这些命令作为快速参考. 我们在早先一篇文章中已经快速介绍过 Vi 速查表[1]了.在这篇文章里,我们将会介绍开始使用 Git 时所需要的基础命令. Git Git[2] 是一个分布式版本控制系统,它被用在大量开源项目中.它是在 2005 年由 Linux 创始人 Linus Torvalds[3] 写就的.这个程序允许非线性的项目开发,并且能够通过存储在本地服务器高效处理大量数据.在这个教程里,我们将要和 Git 愉快玩耍并

git 上传代码到GitHub 以及git删除github上文件和文件的命令

Git入门 如果你完全没有接触过Git,你现在只需要理解通过Git的语法(敲入一些命令)就可以将代码上传到远程的仓库或者下载到本地的仓库(服务器),可知我们此时应该有两个仓库,就是两个放代码的地方,一个是本地,一个是远程的(如Github).企业或者团队可以通过Git来对项目进行管理,每个程序员只需将自己的本地仓库写好的代码上传到远程仓库,另一个程序员就可以下载到本地仓库了.今天我们就从Git终端软件的安装开始,再这之前我也简单介绍一下Github. Git上传代码 一.准备工作 1.注册一个g

Git命令自定义别名

别名用来帮助你定义自己的git命令.比如你可以定义 git a 来运行 git add --all. 要添加一个别名, 一种方法是打开 ~/.gitconfig 文件并添加如下内容: [alias] co = checkout cm = commit p = push # Show verbose output about tags, branches or remotes tags = tag -l branches = branch -a remotes = remote -v ...或者在

git 命令行下浏览器tig使用记录

git 命令行下浏览器tig使用记录 tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. 以下是一些使用记录: 安装成功后,在 Repo 文件夹下,输入 [ tig ]+ [ Enter ]即可进入 tig 模式.此时展现在面前的将会是本地所有的 commit 记录以及分支的演化. [ j ][ k ]可上下切换选中的行,[ Enter ]可分屏查看当前 commit 记录详情,[ l ]小写的 L,全屏查看 commit 记录. [ r ]进

初识git命令,简单github,码云,本地仓库搭建

# 说说我理解的github,码云,git命令 1.简介(初学者) 今天了解到git命令,于是就开始了一番折腾,git命令是做什么用的呢?百度百科:Git(读音为/g?t/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.说的很对,但是不太容易理解,我之前也有过想了解git这个强大“武器”的想法,但是每次都卡在这里.今天学习时看到一个git的使用教程,于是便自身摸索了一遍,实践了一下下现在写点总结. 初识git的我,把git简单看做可以向远端服务器发送文件的命

版本控制——Git 使用笔记,以及Windows搭建Git服务器

Git和Github的关系 链接:http://www.zhihu.com/question/21907548/answer/95284202 来源:知乎 Git是一款免费.开源的分布式版本控制系统 Github是用Git做版本控制的代码托管平台 相当于本地.公司服务器.Github网站服务器都装Git做版本控制,只不过Github的服务器强大些,对全球用户托管的项目用Git做版本控制! 正是由于Github用Git做版本控制,所以可以轻松的记录项目的变迁史,然后有了下图 git是一张弓,git

[转] git config命令使用第一篇——介绍,基本操作,增删改查

平时我们在使用git的时候,很少去关注其配置是如何,而在实际开发中,对git config这个命令的使用也并不是很多,但是配置对一个程序和项目来说都是很重要的,我们今天来看看git的配置以及git config的初步应用.     1. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大家. 你们所知的git配置文件是放在哪里的?git有几个配置文件呢?

git命令使用方法

git安装包 http://c35.yunpan.360.cn/my/?sid=#%2F%E5%AE%89%E8%A3%85%E5%8C%85%2FGit%E5%AE%89%E8%A3%85%2F git安装时秘钥生成步骤 1. git config --global user.name xxx 2. git config --global user.email [email protected] 3. ssh-keygen -C [email protected] -t rsa //第3步分为