分支操作
branch
git branch 分支名 创建一个新分支
checkout
git checkout 分支名 切换到对应的分支
git checkout -b 分支名 切换到对应的分支,如果分支不存在,先创建
merge
git merge 分支名 将其他分支代码合并到当前分支
rabase
git rebase 分支名 合并代码到对应分支
在提交树上移动
head
git checkout 节点hash值 分离head和分支,将head指向对应节点
HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。
HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。
HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。
通过指定提交记录哈希值的方式在 Git 中移动不太方便。实际应用时并没有这么漂亮的可视化提交树供你参考,所以就不得不用 git log
来查看提交记录的哈希值。
并且哈希值在真实的 Git 世界中也会更长(译者注:基于 SHA-1,共 40 位)。可能是 fed2da64c0efc5293610bdd892f82a58e8cbc5d8
。舌头都快打结了吧...
比较令人欣慰的是,Git 对哈希的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可。因此我可以仅输入fed2
而不是上面的一长串字符。
相对引用
正如前面所说,通过哈希值指定提交记录很不方便,所以 Git 引入了相对引用。这个就很厉害了!
使用相对引用的话,你就可以从一个易于记忆的地方(比如 bugFix
分支或 HEAD
)开始计算。
相对引用非常给力,这里介绍两个简单的用法:
- 使用
^
向上移动 1 个提交记录 - 使用
~
向上移动多个提交记录,如~3
“^”操作符
“~”操作符
如果你想在提交树中向上移动很多步的话,敲那么多 ^
貌似也挺烦人的,Git 当然也考虑到了这一点,于是又引入了操作符 ~
。
该操作符后面可以跟一个数字(可选,不跟数字时与 ^
相同,向上移动一次),指定向上移动多少次。咱们还是通过实际操作看一下吧
强制修改分支位置
我使用相对引用最多的就是移动分支。可以直接使用 -f
选项让分支指向另一个提交。例如:
git branch -f master HEAD~3
上面的命令会将 master 分支强制指向 HEAD 的第 3 级父提交。
附上好玩的git入门教程
https://learngitbranching.js.org/?locale=zh_CN