Git笔记(三)版本管理

本文最后更新于:3 个月前

查看commit历史、reset版本回退、revert版本撤销、标签管理

Git笔记(三)版本管理

一、查看commit历史

1.1、查看所有commit

1
2
3
4
git log [--graph] [--pretty=oneline] [--abbrev-commit]
# --graph,以图的形式输出commit记录,适用于有多个分支的情况
# --pretty=oneline,单行输出
# --abbrev-commit,显示commitID缩写

1.2、查看历史git命令

1
git reflog	# 显示所有输入过的git命令
image-20230223002449295

1.3、查看用户git操作历史

1
2
3
4
5
# 显示所有提交过的用户,按提交次数排序
git shortlog -sn

# 显示指定文件是什么人在什么时间修改过
git blame [file]
image-20230223002741439

git shortlog -sn输出的次数是指现存的commit中,有多少是属于该用户的;并非指该用户commit了多少次(两者还是有区别的)

二、版本管理

2.1、reset回退

版本回退,回退之后,不保留目标节点之后的历史记录,一般用于重设修改。

1
git reset [--soft | --hard | --mixed] [commitID]
  • 参数:(可选),缺省默认为mixed
    • –hard,更改HEAD的指向,替换暂存区和工作区的内容(即取消git commit 和 git add 以及 工作区的修改),使其与HEAD指向的目录树一致
    • –mixed,更改HEAD的指向,重置暂存区(即取消 git commit 和 git add)、不改变工作区,原节点和reset后节点的变更差异集放入工作区
    • –soft,只改变HEAD的指向,不修改暂存区和工作区(即取消git commit),原节点和reset后节点的变更差异集放入暂存区,(必须携带commitID参数)
  • commitID:(可选),缺省默认为HEAD。有3种形式可以使用:HEAD、commitID7位缩写、commitID全写

3种模式比较

hard mixed soft
HEAD指向 改变 改变 改变
暂存区 重置修改 重置修改 不会被重置
工作区 重置修改 不会被重置 不会被重置
变更差异集 放入工作区 放入暂存区
适用场景 1.重置所有本地修改
2.丢掉目标commit之后所有修改
1.把暂存区的内容放回工作区
2.重做commit
1.合并相邻的commit

拓展:

  • 场景:把暂存区的内容放回工作区,除了git reset --mixed命令外,还可以用git checkout .实现
  • 场景:重做commit,除了git reset --mixed HEAD^+重新commit这种方法,还可以通过git commit --amend 实现

2.2、revert撤销

git revert命令,跟git reset用法基本一致,git revert 撤销某次操作,此次操作之前和之后的 commithistory都会保留,并且把这次撤销,作为一次最新的提交,一般用于撤销公开的提交

与git reset差别

  • git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit
  • git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容

命令

1
2
git revert [commitID]
# 指定commitID的所有变更被删除,同时这种删除应用到该commit之后的所有commit节点中,作为一个新的commit

三、标签

标签实际上是版本库的一个快照,是指向某个commit的指针。

1
2
3
4
5
6
7
8
9
10
11
12
git tag [tag name]					# 在当前commit上打标签
git tag [tag name] [commitID] # 在指定commit上打标签
git tag -a [tag name] -m "message" # 打标签时添加说明

git tag # 查看所有标签
git show [tag name] # 输出指定标签信息

git tag -d [tag name] # 删除指定标签
git push origin :refs/tags/[tag name] # 删除远程仓库的标签

git push origin [tag name] # 推送指定标签
git push origin --tags # 推送所有标签

Git笔记(三)版本管理
http://timegogo.top/2023/02/23/Git/Git笔记(三)版本管理/
作者
丘智聪
发布于
2023年2月23日
更新于
2023年12月11日
许可协议