git reset and git checkout

git reset --hard <commit>:

1.替换引用的指向.引用指向新的提交ID;

2.替换暂存区.替换后,暂存区的内容和引用指向的文件夹树一致;

3.替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的文件夹树内容同样.

git reset --soft <commit>:

1.替换引用的指向.引用指向新的提交ID.

即仅仅更改引用的指向,不该编暂存区和工作区.

git reset --mixed <commit>或git reset <commit>:

1.替换引用的指向.引用指向新的提交ID;

2.替换暂存区.替换后,暂存区的内容和引用指向的文件夹树一致;

即更改引用的指向及重置暂存区,可是工作区不变.

实例:

git reset

仅用HEAD指向的文件夹树重置暂存区,工作区不受影响,相当于将之前用git add命令更新到暂存区的内容撤出暂存区.引用也未改变,由于引用重置到HEAD相当于没有重置.

git reset HEAD

同上

git reset -- filename

仅将文件filename的修改撤出暂存区,暂存区中其它文件不该变.相当于git add filename的反向操作.

git reset HEAD filename

同上

git reset --soft  HEAD^

工作区和暂存区不改变,可是引用向前回退一次.当对最新提交的提交说明或提交不惬意更改时,撤销最新的提交一遍又一次提交.

git reset HEAD^

工作区不变,可是暂存区会回退到上一次提交之前,引用也会回退一次.

git reset --mixed HEAD^

同上

git reset --hard HEAD^

彻底撤销近期的提交.引用回退到前一次,并且工作区和暂存区都会回退到上一次提交的状态.自上一次以来的提交所有丢失.

--------------------------------------------------------------------------------------------------------------------------------------

git  checkout 

git checkout <commit> [--] <paths>

1.<commit>是可选项,假设省略则相当于从暂存区进行检出.和reset命令大不同样:重置的默认值是HEAD,而检出的默认值是暂存区.

2.因此重置一般用于重置暂存区(除非使用--hard,否则不重置工作区),而检出命令主要是覆盖工作区(假设<commit>不省略,也会替换暂存区中对应的文件).

3.该命令不会改变HEAD的头指针,主要用于指定版本号文件覆盖工作区中相应的文件.假设省略<commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中的相应文件.

git checkout <branch>

1.会改变HEAD头指针.之所以后面的參数写作<branch>,是由于仅仅有HEAD切换到一个分支才干够对提交进行跟踪,否则仍然会进入"分离头指针"的状态.在"分离头指针"的状态下的提交并不能被引用关联到,从而可能丢失.所以该命令主要作用是切换分支.

2.假设省略<branch>则相当于对工作区进行状态检查.

实例:

git checkout branch

检出branch分支,更新HEAD以指向branch分支,以及用branch指向的树更新暂存区和工作区.

git checkout

汇总显示工作区,暂存区与HEAD的差异

git checkout HEAD

同上

git checkout -- filename

用暂存区中的filename文件来覆盖工作区中的filename文件.相当于取消自上次运行git add filename以来(假设运行过)的本地改动

git checkout branch -- filename

维持HEAD的指向不变.用branch所指向的提交中的filename替换暂存区和工作区中对应的文件.会将暂存区和工作区中的filename直接覆盖

git checkout -- .或者git checkout .

会取消本地全部改动,相当于用暂存区的全部文件直接覆盖本地文件.

时间: 2024-11-04 22:04:55

git reset and git checkout的相关文章

代码回滚:git reset、git checkout和git revert区别和联系

git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为它们非常相似,所以我们经常会搞混,不知道什么场景下该用哪个命令.在这篇文章中,我们会比较git reset.git checkout和git revert最常见的用法.希望你在看完后能游刃有余地使用这些命令来管理你的仓库. Git仓库有三个主要组成——工作目录,缓存区和提交历史.这张图有助于理解每个

git reset、git checkout和git revert的区别

这三个git命令都是用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于commit层面,还可以作用于file层面Reset在commit层面,reset通过移除当前分支的一些节点来实现版本回滚; 拥有mixed(默认).soft.hard三个参数:例如:$git reset <commit id> 使用mixed方式回退到指定版本 $git reset --soft <commit id> 使用soft方式回退到指定版本 $git reset --hard <commi

git reset、git checkout 和 git revert

一.git reset 和 git checkout git reset [commit] 重置为[commit]所对应节点的提交(通过移动分支指针和HEAD指针实现),如果不指定[commit]则默认为HEAD--soft 工作区和暂存区不变,重置仓库--mixed 工作区不变,重置暂存区和仓库,此为默认选项--hard 工作区.暂存区和仓库全部重置,修改完全丢失 git reset [commit] [file] 重置某个commit的指定文件到暂存区(指定了[file],不会移动分支指针和

辛星浅析git reset和git revert

很多时候,我们有了误操作,这个时候就需要回退功能的出现,我们可以使用git reset和git  revert这两个功能. git  reset是指将当前head的内容重置,不会留任何痕迹.比如git  reset  --hard   HEAD~3会将最新的3次提交全部重置,就好像没有提交过一样.而--soft和--mixed.--hard会分别重置working  tree和index.HEAD. git   revert是撤销某次提交,但是这次撤销也会作为一次提交进行保存.

Git 相关问题分享,git reset与git revert的区别?

1.如果我在git add 后想要撤销操作,该怎么做? 使用 git rm --cache [文件名/ *]或者 git reset HEAD, 为什么这个命令也会有效果呢,实际上reset将 HEAD指针指向的提交复制到了暂存区,所以看起来暂存区像是没有东西. 这里可以扩展一下:Git 分为三颗“树”: 当我们在工作区修改了时,git add 命令会将文件复制到暂存区,git commit 之后会将index中的内容保存为一个永久的快照.然后创建一个指向该快照的提交对象,最后更新master分

关于git reset和git revert之前的区别

很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以用git reset --hard 去撤销这次修改但是这样做也有问题,可能之前本地的,没有提交的修改,都消失了.可以尝试git revert命令 reset是指将当前head的内容重置,不会留任何痕迹. git reset --hard HEAD~3 会将最新的3次提交全部重置,就像没有提交过一样.

Git reset head revert 回滚

Overview 涉及Git一些日常操作 :) 基础知识 <Pro Git>至少了解branch,commit的概念,及基本的原理 Git常用魔法 存档:master代码回滚方法 我是QA,我用Git Git 工作区.暂存区和版本库 Overview 暂存区(stage, index)是 Git 最重要的概念之一 工作区: 你的目录下面的文件们 暂存区: 由.git/index保存引用,.git/object保存对象的区域 版本库: 仓库 Relations Why stage before

[转] git reset简介

http://blog.csdn.net/hudashi/article/details/7664464 http://guibin.iteye.com/blog/1014369 http://hi.baidu.com/tiger_tnt/blog/item/a0464ffa6a8115d9b58f314d.html http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-reset.html 一

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配合 回退