Git 命令设计解析
Git命令设计解析1.基本概念HEAD:当前commit的引用branch:对commit的引用gitcommitgitlogbranchmaster:默认 master` ,其实是一个特殊的 `branch`:它是 Git 的默认 `branchmaster主要有两个特点:新创建的repository(仓库)是没有任何 com
Git 命令设计解析
1.基本概念
HEAD:当前 commit 的引用
branch:对commit的引用
git commit
git log
branch
master: 默认
master` ,其实是一个特殊的 `branch`:它是 Git 的默认 `branch
master主要有两个特点:
新创建的 repository(仓库)是没有任何
commit的。但在它创建第一个commit时,会把master指向它,并把HEAD指向master。当有人使用
git clone时,除了从远程仓库把.git这个仓库目录下载到工作目录中,还会checkout(签出)master(checkout的意思就是把某个commit作为当前commit,把HEAD移动过去,并把工作目录的文件内容替换成这个commit所对应的内容)。
branch 的通俗化理解
branch 理解为从初始 commit 到 branch 所指向的 commit 之间的所有 commits 的一个「串」。例如下面这张图:
branch的理解
1.所有的 branch 之间都是平等的。
branch
包含了从初始commit` 到它的所有路径,而不是一条路径。并且,这些路径之间也是彼此平等的。
git checkout -b feature1
git commit
git checkout master
git commit
删除 branch
git branch -d feature1
需要说明的有两点:
1. `HEAD` 指向的 `branch` 不能删除。如果要删除 `HEAD` 指向的 `branch`,需要先用 `checkout` 把 `HEAD` 指向其他地方。2. 由于 Git 中的 `branch` 只是一个引用,所以删除 `branch` 的操作也只会删掉这个引用,并不会删除任何的 `commit`。(不过如果一个 `commit` 不在任何一个 `branch` 的「路径」上,或者换句话说,如果没有任何一个 `branch` 可以回溯到这条 `commit`(也许可以称为野生 `commit`?),那么在一定时间后,它会被 Git 的回收机
原创不易,完成人机校验,阅读全文