diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0a9aa6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.swp +*.h +hello diff --git a/notes/2.8-git-gui.md b/notes/2.8-git-gui.md index 4f0317b..98aeb0e 100644 --- a/notes/2.8-git-gui.md +++ b/notes/2.8-git-gui.md @@ -6,3 +6,40 @@ 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 + +```bash +git tag # lighteweighted tag +git tag -a -m # annotated tag +``` +两种的区别在于轻量标签只会有commit对象 +标记标签会自己生成一个对象,然后指向commit对象 + +所以下面的内容中,`git rev-parse`指令的参数A和A^0是不同的哈希 + +```bash +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 # ~ = ^ +``` + +### 2.8.4.2 git rev-list + +git rev-list 用来帮助研究Git的各种**版本范围语法**。 + +```bash +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