git主要命令(高级篇)

在接触 Git 更高级功能之前,我们先学习在你项目的提交树上前后移动的几种方法。 1、HEAD HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在

在接触 Git 更高级功能之前,我们先学习在你项目的提交树上前后移动的几种方法。
1、HEAD
HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。
HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。
HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。
在这里插入图片描述

HEAD -> master ->c1;

git log查看提交记录的哈希值

相对引用非常给力,这里我介绍两个简单的用法:

1、使用 ^ 向上移动 1 个提交记录。
所以 master^ 相当于“master 的父节点”。
master^^ 是 master 的第二个父节点。
详细使用方法:git checkout master^
2、使用 ~ 向上移动多个提交记录,如 ~3。
详细使用方法:git checkout heda~4,向上移动四个父节点

强制修改分支位置

我使用相对引用最多的就是移动分支。可以直接使用 -f 选项让分支指向另一个提交。例如:
git branch -f master(标记名字) HEAD~3
上面的命令会将 master 分支强制指向 HEAD 的第 3 级父提交。
在这里插入图片描述

在这里插入图片描述
该命令的使用格式非常灵活,可以以自身为参照物进行移动
将bugFix标签移动到c6节点

git branch -f bugFix c6

将master标签移动到自己的三级父节点

git branch -f master master~3

撤销变更
和提交一样,撤销变更由底层部分(暂存区的独立文件或者片段)和上层部分(变更到底是通过哪种方式被撤销的)组成。我们这个应用主要关注的是后者。
主要有两种方法用来撤销变更 —— 一是 git reset,还有就是 git revert。接下来咱们逐个进行讲解。

1、git reset
git reset 通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。
在这里插入图片描述
在这里插入图片描述
虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!

2、git revert
为了撤销更改并分享给别人,我们需要使用 git revert。来看演示:
对于示例,也可使用命令 git revert master
在这里插入图片描述
在这里插入图片描述