Git学习(2)-查看提交历史,操作撤销

1.查看提交历史

Git提供了强大的历史提交产看功能。

$git log // 查看粗略的提交记录,

$git log -p
$git log --patch
//给出详细的改动内容,可跟数字参数,查看最近的几条几条记录
$git log -p -2 
//只查看最近两条提交记录

$git log --stat 
//只显示改动计数
$git log --pretty=oneline  
//再一行内显示提交信息
$git log --pretty=format='%h --'  
//根据自定义格式显示提交内容

log命令还能自定义显示的格式,官方说明文档相关说的比较详细

git-产看提交历史

2.操作撤销

2.1 修改提交信息,合并忘了提交的文件,即对上次提交进行修改
使用场景:提交信息写错,或者是在提交时有几个文件没有放到暂存区,在没有新的提交的前提下

$git commit -m 'commit meaasge'
$git add file
$git commit --amend -m'fixed message'

2.2 将文件撤出暂存区
使用场景: 修改后的文件希望分两次提交,但是已经存放到暂存区,将文件从暂存区取出。

$git reset HEAD filename
// 原意是重置,在这里能用作将文件从暂存区中取出

2.3 撤销对文件的修改

$git checkout --filename
//将文件内容变为上一次提交时的样子,以为这你之前的所有修改都放弃

这里复述一下git内部的实现模型。介绍一下reset内部的工作机制,详细参考Git-重置大揭秘

就如前篇所说,git是一个基于快照的版本控制工具,从创建一个新文件到保存该版本的修改会经过三个区域:工作区,暂存区,Git存储区(HEAD指向最后一次提交),同时,reset的运作也是基于这三个区域之间。(官方解释为维护三棵树)

当使用git rest时,HEAD会指向前一次提交,然后将Git存储区的内容复制到暂存区,使的这两个区域的内容看起来像是倒退了一个版本,但是工作区的内容不会发生改变,那么从表现上来看,就可以看成暂存区的内容被取消掉了。

为了满足更加精细化的回退,git reset 还有控制倒退程度的命令

git reset --soft HEAD~ 仅仅将Git存储区的提交回退一个版本,暂存区和工作区内容不变,表现为回退到这一次提交前的状态

git reset --mixd HEAD~ 默认选项, 将Git存储区和暂存区的内容都回退一个版本,表现为有的文件修改却没放到暂存区内,不能被提交。

git reset --hard HEAD~ 危险选项,将三个区域的内容全部都回退一个版本,这意味这在上一个版本之后做出的所有修改都会被重置。

注意:如果不跟上具体的文件,则默认是整个项目文件回退一个版本。

你可能感兴趣的:(Git学习(2)-查看提交历史,操作撤销)