git本质:
https://www.cnblogs.com/mamingqian/p/9711975.html
很多底层命令,需要的时候可以查询使用:这些底层命令就是平时常用命令的封装
git的“分布式”:
没有服务器的概念,每台计算机的副本都是完整的。所谓hub指的是公司的那个重要计算机
功能:分布式协作、分支管理、版本切换
分布式协作:先branch,之后分别merge到主分支:由于branch本身是选择最近的,因此代码就是最近的!
本质实现是通过对文件变更的记录与存储:
每次提交新版本,会将该版本完整保存到git数据库(即git仓库)中
git的实现很像fs
git数据库的内容:插入“值”,返回“键”,键的方式:hash值。这个“键”直接以文件形式存储在git残酷中,前两位为文件夹名,后面的部分为文件名。git cat-file可通过键查看值的具体内容
git数据库能够存储的对象类型:数据对象、树(tree)对象、提交(commit)对象。git的本质就是对象数据库
1、数据对象:简单地跟踪文件变更
2、树对象:目录树架构与文件名保存问题
树对象可以将数据对象架构组织起来:指向普通的数据对象
git暂存区:文件.git/index
3、提交对象:时序关系与版本注释
git add:将改动保存为数据对象、更新缓存区、记录树对象
git commit:创建指提交对象。这些对象都是objects下面的独立文件
4、git的引用:保存在refs/下
分支的本质:指向某一系列提交之首的第一个引用
分支:分支之间不是平行的而是树状的,最终构成树状map
https://www.cnblogs.com/jztan/p/6068780.html
git config --list 显式当前的git配置
git config -e 编辑配置文件
这里有很多重要的信息,如当前有哪些分支等
这俩命令是在设置git的配置文件.gitconfig
新建仓库:
git init 新建一个空的git仓库
目录解释:
objects 存储git数据库
git clone
git除了一般命令,还有底层命令如git hash-object、git cat-file
git创建分支的开销很小:只要在分支点做一下标记,而不会复制整份代码
https://san-yun.iteye.com/blog/1980174 有大量基础命令演示
分支相关命令:
git branch xxx 创建分支
-d 删除分支
-a 显示local、remote的所有分支
git checkout 切换,即改变工作区代码
-b 若分支不存在则创建
.git/HEAD文件 是一个很小的文本文件,指向当前分支
git status 查看工作区、暂存区的区别
git add 工作区->暂存区
git commit 暂存区->本地仓库
origin 远端仓库的别名
master 只是第一个branch而已
origin/master 远程代码库的master分支
git的repository有两个:local/remote,这其实也就是那张图的意思;两边的每个repo又都有自己的branch
git diff 查看任意两个分支的区别:不仅仅能看工作区与暂存区的区别
git push origin <local br>:<dst br> 若branch名字相同可简写
origin remote的具体地址
pr:这是Github的概念
写代码:应该在feature/jira分支去写!
git reset:删去那些认为冗余的commit评论