Git 原理详解及实用指南 - HEAD,branch,push

  1. HEAD永远指向当前commit,每个仓库只有一个HEAD,每次提交之后都会向前移动到最新的commit。
  2. 远程分支HEAD永远指向默认分支(master)。
  3. HEAD是Git中独特的引用,它是唯一的。

Branch

  1. 也是一类引用,HEAD除了直接指向commit之外,也可以通过指向branch间接指向commit
HEAD通过Branch间接指向Commit
图 - HEAD通过Branch间接指向Commit
  1. 当HEAD指向branch,发生commit时,HEAD会带着branch一起移动。如下图(HEAD携带feature1一起移动。)
HEAD移动示意图
图 - HEAD移动示意图

Push

  1. 将当前 branch 提交到远程仓库,并将当前 branch 的所有 commit 也提交到远程分支。
  2. push时,如果是远程仓库不存在的分支,需要指定名称,git push origin branch_name, 或者通过修改 git configpush.default 来指定推送时默认分支。
  3. push之后上传分支,并不会上传 HEAD, 远程仓库的 HEAD 永远指向默认分支(master)

master

master是Git中默认的branch,它与其他branch的区别在于:

  1. 新建仓库中第一个commit会被master自动指向。
  2. 在git clone时,会自动checkout到master(HEAD指向master分支,间接指向master分支的commit)。
    克隆远程仓库流程
图 - 克隆远程仓库流程

branch的基本操作

  1. 创建: git branch 名称,或 git checkout -b 名称
  2. 切换:git checkout 名称
  3. 删除:git branch -d/-D 名称,-D强制删除
  4. 推送:git push [origin branch_name],将本地分支推送到远程仓库对应分支

本章命令总结

  1. git log 查看提交日志
  2. git branch branch的基本操作
  3. git commit 提交代码到本地仓库
  4. git checkout branch_name 切换分支
  5. git clone origin_url 克隆远程仓库到本地仓库

总结

  • git branch、HEAD都是围绕着commit走的;
  • git push的本质是将 当前branch 位置的(commit)上传到远程仓库,并将它的commit一并提交。
  • HEAD,Branch都是引用,引用的本质就是一个字符串,可以是一个commit的SHA-1码,也可以是一个branch的branch名

引用声明

本文内容来自掘金小册-Git 原理详解及实用指南的学习笔记内容,图片等均来自原作者。此处只作为笔记记录。
请支持原作者购买信息