1
0
forked from iicd/git-learner
git-learner/notes/2.8-git-gui.md
2024-08-20 22:30:49 +02:00

3.4 KiB
Raw Blame History

git UI

2.8.4 git rev-parse

git rev-parse --symbolic --branches # 显示分支
git rev-parse --symbolic --tags # 显示里程碑
git rev-parse --symbolic --glob=refs/* # 显示所有的引用

git rev-parse可以将一个Git对象表达式表示为对应的SHA1哈希值

tag也分为两种lightweighted tag和annotated tag

git tag <tagname> # lighteweighted tag
git tag -a <tagname> -m <message> # annotated tag

两种的区别在于轻量标签只会有commit对象 标记标签会自己生成一个对象然后指向commit对象

所以下面的内容中,git rev-parse指令的参数A和A^0是不同的哈希

git rev-parse master refs/heads/master # 显示多个哈希
git rev-parse  A  refs/tags/A
git rev-parse  A^{}  A^0  A^{commit}
git rev-parse  A^3 # ~<n> = <n> ^

git rm / git add -u / git rm --cached

git rm会执行两个指令:

  1. 删除文件(工作区中的)
  2. 添加删除操作到暂存区
  3. 有一个前提是文件必须已经被git所跟踪

git add -u是将工作区的已经被git跟踪的文件添加到暂存区,包括修改和删除

git rm --cached是将暂存区的移除出来,也就是让Git停止跟踪文件。也就是说如果文件之前已经在commit中无论文件是否被修改使用这个指令都能让Git停止跟踪文件

2.8.4.2 git rev-list

作用主要是研究不同版本之间的范围,主要就是哈希值

git rev-list --oneline A
git rev-list --oneline D F # 使用两个tag的并集
git rev-list --oneline ^G D # 排除这个版本和历史版本 等价于
git rev-list --oneline G..D # 连接两个版本
git rev-list --oneline B...C # 两个版本共同能够访问的除外
git rev-list --oneline B^@ # 提交的历史提交,自身除外
git rev-list --oneline B^! # 只看提交本身

2.8.4.3 git log

显示提交历史

参数代表版本范围

git log --oneline F^! D

graph show

git config alias.glog "log --graph"# 用别名
git glog --oneline

显示最近几条

git log -3 --pretty=oneline

显示提交的具体改动

git log -p -1

显示变更概要

git log --stat --oneline I..C #显示版本I到C的变更概要

显示参数

git log --pretty=raw -1 # 显示提交的原始数据,
git log --pretty=fuller -1 # 显示作者和提交者
git log --pretty=oneline # 提供最精简的日志输出

只是查看,分析某一次的提交,可以使用git show或者是git cat-file命令

git show D --stat # 展示里程碑D及其提交
git cat-file -p D^0 # 展示里程碑D及其提交

2.8.4.4 git diff

git diff B A # 比较B和A里程碑
git diff A # 比较工作区和里程碑A
git diff --cached A
git diff
git diff --cached 
git diff HEAD
git diff --word-diff

2.8.4.5 git blame

可以追溯指出是谁在什么时候,什么版本引入的代码

git blame <filename>
git blame -L <n,m> <filename> # 查看某几行

2.8.4.6 git bisect

用于二分查找什么时候引入的代码

git bisect start # 开始二分查找
git bisect bad # 设置当前版本为坏版本
git bisect good G # 设置里程碑G为好版本
git bisect reset # 结束

标记错误,恢复

git bisect log > logfile # 打开logfile删除标记错误的行
git bisect reset
git bisect replay logfile # 用logfile恢复进度