git进阶

作者: 123早超 | 来源:发表于2019-08-08 01:05 被阅读0次

git原理简介

关于git原理的详细介绍,请参考git的官方中文教程。这里只是有选择性地粗略地介绍一部分。

工作区、暂存区与仓库

  1. 工作区是指你的工程文件夹中实际能看到的(除了了.git文件夹)以外的你能看到的部分,这些部分的文件是可供你随意增添,删除,修改的。

  2. 如果将你工作区已更改的部分提交到暂存区,那么将会生成这些已修改文件的快照。注意在提交到仓库之前,所有的已修改,添加,删除的文件都要提交到暂存区。

  3. 使用提交命令后,将会有一个新的版本生成。仓库实质上可以理解成是一个记录了所有版本的信息和具体内容的区域。

版本与分支

版本是一个对象

如果使用提交到仓库命令,将会生成一个提交对象,这就是生成一个版本的实质过程。这个提交对象储存了该版本的相关信息,以及上述提到的文件快照的位置。这个对象以提交前HEAD指向的对象为父对象(第一次提交时的提交对象没有父对象)(或者说指向提交前HEAD指向的对象)。

如果你多次提交的话,所有的提交对象就会形成“一条链”,或者是可以理解成一条时间线。如图所示:

多个版本的“时间线”

分支是一个指针

分支实时上是一个指向提交对象的一个指针,每一个仓库都会默认有一个master分支。
HEAD也是一个指针,但它其实并不是直接指向提交对象的,它是一个指向分支指针的指针。HEAD指向的分支所指的提交对象表示“当前的版本”。

分支与"HEAD"

git分支管理

分支的创建与合并

下面是一些基本命令

git branch <branchname>
//创建新分支,默认指向HEAD版本

git checkout <branchname>
//切换到某个分支(意思是HEAD指向该分支,暂存区清空,工作区切换到该分支指向的版本)

git checkout -b <branchname>
//创建新分支,并切换到该分支

git branch
//查看当前分支

git merge <branchname>
//将当前分支与指定的分支合并

这里重申一下commit要做的事情:
生成一个提交对象,指向上一个对象,之后HEAD指向的分支指向这个新的提交对象。最后清空暂存区。此时工作区内容也应与当前HEAD版本一致。
再重申一下回退(即切换版本)要做的事情:
将HEAD指向的分支指向某个提交对象,清空暂存区,并将工作区内容切换到与当前HEAD版本一致。
通过以上几点可以发现:
只要HEAD版本(意思是HEAD指向的分支所指的提交对象对应的版本)发生了改变。暂存区将会被清空,工作区也将会被切换到与HEAD版本一致的状态。

如果分别在不同的分支进行提交,将可能会出现多个提交对象指向同一个提交对象的情况。那么我们之前所提及的“一条链”的结构便不复存在了。而是一种“树形结构”。

分支树形结构

合并的详解(未完成)

合并的几种方式(未完成)

解决合并冲突(未完成)

相关文章

  • GIT 进阶

    GIT 进阶 命令:

  • 工具集#01 Git 代码版本控制

    目录:Git 入门Git 进阶Git 高阶总结 1. Git 入门 Git global setup Create...

  • 工具集#01 Git 代码版本控制

    目录:Git 入门Git 进阶Git 高阶总结 1. Git 入门 Git global setup Create...

  • gitflow 规范及工具整理

    gitflow 进阶规范 git cz 通过工具 git-cz 规范 git commit 提交信息。 使用 gi...

  • 2.git进阶篇总结

    阅读 Git 原理详解及实用指南 记录 进阶 1 - HEAD、master 与 branch: 介绍了 Git ...

  • 20170724GitHub继续

    学习内容 从 0 开始学习 GitHub 系列之【Git 进阶】 作者:stormzhang 设置git本地的用...

  • Git教程——高级进阶(二)

    前言 这次给大家带来Git进阶用法第二篇,上一篇基础篇还没看的同学可以去看看,传送门:Git教程——高级进阶(一)...

  • git 进阶使用手册

    博客更新:tengfeios.com介绍一些关于git的进阶操作 提交相关 git提交内容模版 git confi...

  • Git进阶

    Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 与 SVN 区别 GIT不仅...

  • Git 进阶

    一、进阶命令 1.git fetch 到远程仓库中拉取所有本地仓库中还没有的数据,但只是拉取,不自动进行分支合并,...

网友评论

      本文标题:git进阶

      本文链接:https://www.haomeiwen.com/subject/fdozdctx.html