Git 一些底层的相关知识

基本概念

主要目的:项目管理、版本控制

集中化版本控制系统:svn 过于依赖主服务器

分布式版本控制系统:Git

​ 将完整项目镜像下来,相当于每台电脑都是一个服务器

简介&安装

配置: 配置一次即可

git config --global user.name 'sunqg'
git config --global user.email ''

# 检查已有的配置信息
git config --list

--global  当前用户使用此配置 优先级最低
--system  系统全局使用此配置 优先级第二
		  当前项目使用此配置 优先级最高
			

区域

工作区:本地写代码的项目目录,沙箱环境(随便玩,随便改)
暂存区:暂时存储代码,

git ls-files -s   查看暂存区

版本库:托管代码

工作区写好后推到暂存区,再推到版本库

对象

git init  # 创建隐藏目录,包含以下文件
目录名作用
hooks客户端或服务端的钩子脚本,类似于js中的回调函数
info全局性排除文件
logs日志信息
objects存储所有数据内容
refs存储指向数据(分支)的提交对象的指针
config文件包含项目持有的配置选项
description用来显示对仓库的描述信息
HEAD指示目前被检测出的分支
index保存暂存区信息
linux 常用命令

clear 				  清除屏幕
echo'str'			  向控制台输出信息
ll					  将当前目录下的文件&目录平铺在控制台
find 目录名  			将对应目录下的所有子孙文件&子孙目录平铺在控制台
find 目录名 -typef 	将对应目录下的文件平铺于在控制台
rm 文件名				删除文件
mv 源文件	重命名文件	重命名
cat 文件的url			查看文件的对应内容

git对象

git的核心部分是一个简单的键值对数据库(objects)

git对象只能存储文件,不能存储内容

# 不加 -w不会存入objects
echo 'test contetent' | git hash-object -w --stdin


# 查看
find ./.git/objects  -type f

# 存储文件到git数据库(objects)
git hash-object path 

#查看
git cat-file -p  哈希名

树对象

解决文件名存储问题,一次存储多个git对象

git对象 -》 文件 文件的一次次版本

树对象 -》 目录 项目的一次次版本

# 生成哈希
git hash-object -w filename

# 提交至缓存区
git update-index --add --cacheinfo 100644 e9ff6e3e9a0d8c5af81006168341565147af6460  git笔记.md

# 提交至git数据库objects
git write-tree

提交对象

一个提交对象(对树对象进行了封装), 代表一个版本

每一次版本都是一次快照

# 生成该树对象的相关信息  作者 时间 邮箱等
commit-tree 树的前七八位哈希值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值