Git基础及底层命令

git使用的是Linux命令

查看当前版本
get --version

初始化:

配置用户名:	 
git config --global user.name "name"
配置电子邮箱
git config --global user.email [email protected]	 
检查已有配置:
git config --list

初始化新仓库:

git init
用法:在当前目录下运行,输入命令,这个会出现.git隐藏文件夹
解析:要对现有的某个项目开始用Git管理,只需到此项目的所在的目录,执行:git init

.git目录:

	hooks:目录包含客户端或服务端的狗子脚本
	info:包含一个全局性排除文件
	logs:保存日志信息
♥	objects:目录存储所有数据内容
♥	refs:目录存储指向数据(分支)的提交对象的指针
	config:文件包含项目特有的配置选项
	description:用来显示对仓库的描述信息
♥	HEAD:文件指示目前被检出的分支
♥	index:文件保存暂存区信息

基础的linux命令:

clear:清除屏幕
echo 'test content':往控制台输出信息
	echo 'test content'>test.txt:将内容放进文件件(没有会新建,有会更新内容)
ll:将当前目录下的 子文件&子目录平铺在控制台
find 目录名:将对应目录下的子孙文件&子孙目录平铺在控制台(./表示当前目录)
find 目录名 -type:将对应目录下的文件平铺在控制台
rm 文件名:删除文件
mv 源文件 重命名文件:重命名
cat 文件的url:查看对应文件的内容
vim 文件的url(在英文模式下):
	按i进插入模式 进行文件的编辑
	按esc键 进行命令的执行,在前面添加:在输入下面命令
		q!	强制退出(不保存)
		wq 	保存退出
		set nu	设置行号

Git的核心部分是一个简单的键值对数据库。可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索该内容

对一个文件进行简单的版本控制:

---向数据库写入内容,并返回对应键值
命令:
	echo 'content' |git hash-object -w --stdin
	(-w选项是:hash-object命令存储对象,如果没有-w,则只会返回对应的键值)
	(--stdin(standard input)选项则指明该命令从标准输入读取内容,如果没有-stdin,则需要在末尾加入待存储文件的路径)


---查看Git是如何存储的
命令:
	find.git/objects -type -f
返回:
	.....


---创建一个新文件并将其内容存入数据库
命令:
	echo 'version 1'>test.txt
	git hash-object -w test.txt
返回:
	4c8941sa2d12315d4as1d45as64d86(哈希值,随便打的)


---向文件写入新内容,并再次将其存入数据库:
命令:
	echo 'version 2'>test.txt
	git hash-object -w test.txt
返回:
	(哈希值)


---根据键值对拉取数据内容
命令:
	git cat-file -p ......(对应的键值)
	(-p选项可指示该命令自动判断内容的类型,并为我们显示格式友好的内容。-t看类型)
返回:
	对应文件的内容


--看出暂存区
命令:
	git ls-files -s

构造树对象:

通过update-index;writer-tree;read-tree等命令来构建树对象并塞入暂存区

操作:
	利用update -index命令为test.txt文件的首个版本创建一个暂存区。并通过writer-tree命令生存树对象。
	命令:
		git update-index --add --cacheinfo 100644 ....... test.txt(键值加上文件名)
		git writer-tree(给暂存区拍张照,生成树对象)
		文件模式:
			100644:表明这是一个普通文件
			100755:表示一个可执行文件
			120000:表示一个符号链接

	--add选项:
		因为此前该文件并不在暂存区中,首次需要-add。如果要进行覆盖,则不需要加--add
	--catheinfo选项:
		因为将要添加的文件位于Git数据库中,而不是位于当前目录下,所有需要-catheinfo

首次创建:
提交对象:echo '注释' | git commit 树对象键值
再次创建:
提交对象:echo '注释' | git commit 树对象键值 -p 父提交对象键值

总结:
项目的版本就是一个提交对象
本质上,项目的快照是一个树对象

发布了117 篇原创文章 · 获赞 1 · 访问量 7070

猜你喜欢

转载自blog.csdn.net/qq_43616001/article/details/104262118
今日推荐