HEAD
- HEAD永远指向当前commit,每个仓库只有一个HEAD,每次提交之后都会向前移动到最新的commit。
- 远程分支HEAD永远指向默认分支(master)。
- HEAD是Git中独特的引用,它是唯一的。
Branch
- 也是一类引用,HEAD除了直接指向commit之外,也可以通过指向branch间接指向commit。
- 当HEAD指向branch,发生commit时,HEAD会带着branch一起移动。如下图(HEAD携带feature1一起移动。)
Push
- 将当前
branch
提交到远程仓库,并将当前branch
的所有commit
也提交到远程分支。 - push时,如果是远程仓库不存在的分支,需要指定名称,
git push origin branch_name
, 或者通过修改git config
的push.default
来指定推送时默认分支。 - push之后上传分支,并不会上传
HEAD
, 远程仓库的HEAD
永远指向默认分支(master)
master
master是Git中默认的branch,它与其他branch的区别在于:
- 新建仓库中第一个commit会被master自动指向。
- 在git clone时,会自动checkout到master(HEAD指向master分支,间接指向master分支的commit)。
branch的基本操作
- 创建: git branch 名称,或 git checkout -b 名称
- 切换:git checkout 名称
- 删除:git branch -d/-D 名称,-D强制删除
- 推送:git push [origin branch_name],将本地分支推送到远程仓库对应分支
本章命令总结
- git log 查看提交日志
- git branch branch的基本操作
- git commit 提交代码到本地仓库
- git checkout branch_name 切换分支
- git clone origin_url 克隆远程仓库到本地仓库
总结
- git branch、HEAD都是围绕着commit走的;
- git push的本质是将
当前branch
位置的(commit)上传到远程仓库,并将它的commit一并提交。 - HEAD,Branch都是引用,引用的本质就是一个字符串,可以是一个commit的SHA-1码,也可以是一个branch的branch名。
引用声明
本文内容来自掘金小册-Git 原理详解及实用指南的学习笔记内容,图片等均来自原作者。此处只作为笔记记录。
请支持原作者