辛星浅析git中的版本回退

首先需要说的就是commit  id,它和svn不同,git的commit id不是1,2,3...这种递增的数字,而是一个SHA1计算出来的一个非常大的数字,它用十六进制来表示,因为git是分布式的版本控制系统,所以就只能用这种方式了。

在git中,我们用HEAD表示当前版本,上一个版本就是HEAD^,上上个版本就是HEAD^^,如果我们前100个版本就是HEAD后面跟100个^,但是我们通常不这么写,我们通常写成HEAD~100。

而且我们回退使用git  reset命令,比如我们要回退到上一个版本,我们可以使用 git  reset   --hard   HEAD^来回退到上一个版本。

我们可以使用git   reflog来记录我们的HEAD指向的位置,需要注意的是git  log是查看每次提交,这两个是差别很大的。

而对于git  checkout  --  readme.txt,就是把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

(1)一种是readme.txt自从修改后还没有放到暂存区,那么,撤销修改就会到和版本库一模一样的状态。

(2)一种是readme.txt已经添加到暂存区,又做了修改,那么,撤销修改就会回到暂存区后的状态。

也就是说,git  checkout   --  文件名  就是让这个文件回到最近一次 git  commit或者git  add时的状态。

我们还可以用命令  git  reset   HEAD  文件名   都可以吧暂存区的修改撤销掉,然后重新放回工作区。

我们使用git  reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区,我们用HEAD时,表示最新的版本。

时间: 2024-08-02 15:12:23

辛星浅析git中的版本回退的相关文章

辛星浅析git中的submodule

有时候,我们需要将一些通用的部分抽取出来做成一个公共库,它可以给别的工程使用,而公共代码库的版本管理是比较麻烦的.我们可以使用git中的submodule来做到这一点. 1.添加 为当前工程添加submodule,命令格式是:git   submodule   add   仓库地址    路径 在添加完成后,在当前工程路径下会生成一个名为".gitmodules"的文件,它记录了子模块的信息,添加完成之后,将子模块所在的文件夹添加到工程中即可. 2.删除 删除submodule,我们首

辛星浅析git中的代码撤销与回退

1.回退到最近一次提交的状态使用  git  reset  --hard   HEAD 命令,这里的--hard表示删除自从该次提交后所有的修改记录,未跟踪的文件除外,如果需要保留目前的修改,则执行git  reset  --soft  HEAD. 2.回退代码到某次指定的提交状态,我们使用git  reset  --hard  <hashcode> 命令,这里的hashcode是该次提交的哈希码.git没有办法回退单个文件到某次提交状态,如果确实需要这么做,那么应该先取得某次提交时该文件的内

辛星浅析git中查看某个文件的历史

有时候我们在比对代码的时候,会看到一些改动,但是不清楚这个改动的具体内容的话,我们通常可以通过如下步骤来执行: (1)使用git  log来查看某个文件的变化,需要注意的是这里我们只关注某个文件的变化,而不是整个git库,否则就无从看起了. 我们在git  log后面接文件名即可,范例如下: [email protected]:/root/xin# git log --pretty=oneline MessageItem.java 27209385caf678abe878375a470f4edd

Git秘籍:在 Git 中进行版本回退

导读 在这篇文章中,你将学到如何查看项目中的历史版本,如何进行版本回退,以及如何创建 Git 分支以便你可以大胆尝试而不会出现问题.快来试试吧. 在你的 Git 项目的历史中,你的位置就像是摇滚专辑中的一个片段,由一个被称为 HEAD 的 标记来确定(如磁带录音机或录音播放器的播放头).要在你的 Git 时间线上前后移动 HEAD ,需要使用 git checkout 命令. git checkout 命令的使用方式有两种.最常见的用途是从一个以前的提交中恢复文件,你也可以整个倒回磁带,切换到另

Git 系列(四):在 Git 中进行版本回退

在这篇文章中,你将学到如何查看项目中的历史版本,如何进行版本回退,以及如何创建 Git 分支以便你可以大胆尝试而不会出现问题. 在你的 Git 项目的历史中,你的位置就像是摇滚专辑中的一个片段,由一个被称为 HEAD 的 标记来确定(如磁带录音机或录音播放器的播放头).要在你的 Git 时间线上前后移动 HEAD ,需要使用 git checkout 命令. git checkout 命令的使用方式有两种.最常见的用途是从一个以前的提交中恢复文件,你也可以整个倒回磁带,切换到另一个分支. 恢复一

git中的版本回退

git版本回退有两种情况,一种是从本地版本库中(head区)回退到某个版本,可以用命令 git reset --hard head^ 或git reset --hard head~x ,head指的是当前版本,head^指的是回退到上一个版本,head~x,x为任意大于0的数字,表示回退到当前版本的前x个版本.(如果你从最新的版本库回退到某个版本的时候又反悔了还是想回到最新的版本库,可以用git reflog命令找到每次操作的id,然后用命令git reset --hard id可以回到对应的版

辛星浅析git blame的使用

git  blame可以显示该文件的修改.以及作者上次修改文件的内容.他不会告诉我们文件中被删除以及被替换的内容,要详细的知道,我们还需要配合git  diff的使用. 下面是我们在git中创建了一个aa文件,然后是三次commit提交,以及只属于工作目录的修改. 我们用git  blame来查看一下效果: $git blame aa ^2cae297 (xin 2013-06-02 17:56:14 +0800 1) The beginning is to learn git blame ^2

辛星浅析git init中的--bare选项,也就是裸仓库

通常如果一个仓库作为远程仓库使用的时候,我们初始化的时候通常是git  init  --bare,首先解释一下这个bare,它翻译成汉语即"裸的",他之会生成一类文件,用于记录版本库历史记录的.git目录下面的文件,而不会包含实际项目源文件的拷贝,因此该版本库不能称为工作目录(working  tree). 当不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本记录文件就存放在.git目录下,而使用--bare选项时,就不再生成.git目录,而只是生成.g

辛星整理git中的tag

标签可以针对某一时间点的版本做标记,常用于版本发布. 1.列出标签. 使用git  tag可以在控制台中打印出当前仓库的所有标签. 使用git  tag  -l   通配符  可以搜索出符合当前模式的标签. 2.打标签. 通常标签可以分为:①轻量级标签.②附注标签.③签署标签. 轻量级标签是指向提交对象的引用.附注标签则是仓库中的一个独立对象. 创建轻量级标签不需要传递参数,直接指定标签名称即可. 创建附注标签时需要使用参数a,a是annotated的缩写,指定标签类型,后面跟标签名. 创建附注