探寻Git如何管理文件版本的小秘密

简介: 探寻Git如何管理文件版本的小秘密

本文的主要围绕着下面这个问题展开的,在阅读之前可以先自己思考一下问题的答案是什么?

  • • HEAD怎么理解?
  • • 分离头指针是个什么玩意?

HEAD翻译为“头部”,在Git中我们一般称为“头指针”,主要表示当前工作区基于哪个版本进行开发,也可以理解为当前开发所在分支的最后一次提交

我们一般切换分支都是使用已经创建的分支,例如git checkout master。另外还有一种操作,就是基于某次提交记录(git checkout commit版本号),如下图所示

image.png

这种操作切换的工作区没有在任何一个分支上面,与任何一个都没有关系。如果后续没有进行保存,在这个上面做的修改会被 git 彻底丢弃。

从提示信息我们可以看出这是处于detached HEAD的状态,网上解释说这是分离头指针的状态,总感觉有点怪怪的。说人话这就是一种在分支之外的开发状态。


此时我们通过查看.git/HEAD文件会发现,里面原来存放的分支名称变成了提交记录的版本号。正是我们上面切换分支时使用的提交记录版本号。

image.png

如果我们做了修改,并且提交修改记录,以前的分支名变成了detached HEAD 最新的提交版本号,提示信息会发现如下所示

image.png

如果这时候我们需要切回其他分支,Git 会给我们一些提示信息,告知我们有一些修改没有关联分支,并且给了我们新建分支的建议。

image.png

想要保存原来在无分支状态做的修改,可以使用基于提交记录新建分支的命令

git branch <new-branch-name> a8dfef1

除此之外,我们还可以使用其他方式保存这些修改。当我们处理分离头指针的状态时,我们可以使用下面的命令创建分支。

git switch -c <new-branch-name>

假设我们不想创建新的分支,我们还可以直接把内容合并到其他分支,比如我们想把内容合并到dev分支,则可以借鉴下面的命令。

# 切换到需要合入代码的分支
git checkout dev
# 使用分离头指针状态下提交记录的版本号
git merge <commit版本号>

image.png

那么分离头指针操作,适合的场景都有哪些呢?

如果我们想基于某次提交做一些新的尝试,而且不确定这些代码要不要合入正式分支的时候,可以使用这种方式。在上面的修改不会影响其他分支的现有状态,也不用创建新的分支。

如果修改以后发现方案行不通,可以直接切换到其他分支,这里的修改后面会被Git丢弃掉。如果需要保存的话,可以创建新的分支,或者把修改的代码合入某个分支。

总结

image.png

目录
相关文章
|
6天前
|
安全 开发工具 git
git合并错了,我想回退到之前的版本
git合并错了,我想回退到之前的版本
|
2月前
|
缓存 开发工具 git
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
本文介绍了如何为Git仓库添加`.gitignore`文件来排除不需要跟踪的临时文件,并展示了如何删除已经被提交的临时文件缓存,以清理Git仓库中的不必要文件。
109 0
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
|
2月前
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
107 1
|
3月前
|
开发工具 git
git如何不上传指定的文件或文件夹
【7月更文挑战第9天】平时写代码的时候有很多测试文件或者静态文件,没必要上传到git上,不仅占资源更新还麻烦,以下介绍如何忽略不需要上传的文件或文件夹。
275 8
|
3月前
|
开发工具 git
unable to index file ‘~$git提交版本号.xlsx‘
unable to index file ‘~$git提交版本号.xlsx‘
|
3月前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
59 0
|
3月前
|
开发工具 git
git 恢复单个文件到指定版本
git 恢复单个文件到指定版本
31 0
|
4月前
|
开发工具 git
如何配置git的.bashrc文件
如何配置git的.bashrc文件
|
4月前
|
Java 开发工具 git
java开发配置全局git忽略文件(IDEA)
java开发配置全局git忽略文件(IDEA)
|
开发工具 git