Skip to content

git reset 和git revert #27

@innerWang

Description

@innerWang

HEAD指向当前版本,git允许我们在版本的历史之间来回切换,

  • 切换前,可使用git log查看提交历史,以确定要回退到哪个版本;
  • 切换后,可使用git reflog查看命令历史,以确定要回到未来的哪个版本。

git reset

git reset是根据设定的commit_id来回移动HEAD

使用命令为:

$ git reset --hard commit_id
$ git reset --soft commit_id
  1. --hard 会同时删掉本地工作区的文件,且清空暂存区
  2. --soft 仅是返回到某次commit,工作区以及暂存区仍保留有内容,可后续再对暂存区的文件进行提交

示例如下:
首先查看提交历史,可以看到最新一次的提交的commit_id为8c2330d
image

此时进行两次git reset --hard操作,可以看到HEAD节点来回移动
image

由于又移动回8c2330d,此时git log 得到的commit记录与开始测试时的一致,再继续进行git reset --soft操作并使用git status查看当前目录状态,可以发现与hard操作不同的是,在暂存区存在未commit的文件
image

可以git log查看到HEAD指针已经移动到所设定的commit_id对应的记录,此时对暂存区的文件进行提交操作
image

可以看到由于刚刚的commit操作,新增了一条记录
image

git revert

git revert是用一次新的commit 来回滚之前的commit,会产生一次新的提交,这次提交会将需要revert的内容反向修改回去,版本会递增,但是不会影响之前提交的内容。

$ git revert commit_id

接续上述操作进行revert操作,git log 后可以看到新增了一次提交记录,同时本地的index.html会被删除。

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions