手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

GIT学习--(6) GIT分离头指针详解

时间:2024-10-12 12:22:00

1、首先还是要强调一下,目前我们仓库中已经有了3个分支,master、mileStone 和 showCase, 在后面的操作中,我们一定要切记先确认自己是不是工作在预想的分支上,不要犯了“路线”错误!我们先通过 git checkout master 将工作分支切换到主分支上,通过 git branch -av 可以看出 HEAD 指针目前指向 master 分支。

GIT学习--(6) GIT分离头指针详解

2、HEAD指针通常就是指向一个分支,通过 git checkout BranchName 可以切换HEAD指针指向的分支,那HEAD还能指向哪里呢? 我们知道 git checkout BranchName 命令中的 BranchName 代表一个分支的最新的一次提交记录(当前最新版本),根据我们前面的描述,一次提交记录可以通过一个40位的hash值来唯一确认,那么我从当前分支的提交历史中找一个hash值(非最新那个),然后运行命令 git checkout 某次提交hash值,会发生什么呢?

GIT学习--(6) GIT分离头指针详解

3、运行命令后,GIT给了我们一大段反馈(如上图),略微翻译一下: "仓库正处于分离头状态,你可以查看当前仓库的内容,做一些试验性的修改并提交,但是当你通过运行 git check泠贾高框out 命令切换到其他分支上时,你所做的所有修改都会被抛弃!如果你认为你当前的修改有价值,需要保留,可以通过运行命令 git checkout -b NewBranchName 基于当前仓库的内容创建一个分支 。" 通过第2步操作,我们的仓库成功进入分离头的状态,运行命令 git branch -av ,可以看出我们多了一个没有名称的分支(图示),并且我们正工作在其上;运行命令 git log --all --oneline ,我们可以看到 HEAD 没有指向任何一个分支,而是孤零零的附着在一次提交记录上 (图示),这就是分离头的概念!

GIT学习--(6) GIT分离头指针详解
GIT学习--(6) GIT分离头指针详解

4、按照GIT给我们的提莲镘拎扇示,我们试着在“分离头状态仓库”中进行一些变更并提交(直接修改仓库中那个文本文件即可),通过相关添加,提交的命令操作后,我们可以看到变更已经体现在了分离头上(图示),根据上一步GIT给我们的反馈,如果我们此时通过 git checkout 命令切换到一个具体分支上,这些变更是会被抛弃的,那如果我们想永久保存这些变更该怎么办呢?还是依据反馈,我们应该将这些变更保存到一个有名称的分支上,GIT把相关命令也给我们了,我们运行这个命令:git checkout -b detachedHeadChanges (我把这个分支就命名为 detachedHeadChanges ) , 然后我们再通过 git log --all --oneline -- graph 来看看目前仓库中的分支路径(图示),分离头状态已经消失了,HEAD指针指向了我们最新创建的分支,仓库中目前存在3条独立的分支提交路径。

GIT学习--(6) GIT分离头指针详解
GIT学习--(6) GIT分离头指针详解

5、分离头部分已经介绍完了,这里我们顺带再说一点东西,那就是分支的删除,我们可以创建分支,当然也可以删除分支,命令 git branch -D BranchName 就会强制删除分支,注意:删除前一定要考虑清楚,这个命令可没有后悔药,一旦执行,该分支永久消失!图示,我们将上面通过分离头创建的分支 detachedHeadChanges 删除的效果 (注意:我们不能删除正在工作的分支本身)。

GIT学习--(6) GIT分离头指针详解
© 手抄报圈