Git基础篇

一、使用Git之前需要做的最小配置

添加配置

配置user.name和user.email信息

将参与项目开发的人员的名称和邮箱地址进行配置,便于后期将相关的问题通知到对应的人员。

$git config --global user.name 'your_name'
$git config --global user.email 'your_email@domain.com'

config的三个作用域

$git config --local        #local:只对某个仓库有效
$git config --global        #global:对当前用户所有仓库有效(使用频率最高)
$git config --system        #system:对系统所有登录的用户有效(很少使用)

显示配置

显示config的配置信息,加--list

$git config --list --local
$git config --list --global
$git config --list --system

清除配置

清除config的配置信息,加--unset

$git config --unset --local user.name
$git config --unset --global user.name
$git config --unset --system user.name

优先级

 local>global>system 

 二、创建Git仓库

创建Git仓库主要有两种方式:用Git之前已经有项目代码、用Git之前还没有项目代码

1、用Git之前已经有项目代码

$cd 项目代码所在的文件夹

$git init

2、用Git之前还没有项目代码

$cd 某个文件夹

$git init your_project  #会在当前路径下创建和项目名称同名的文件夹

$cd your_project

三、给文件重命名的简便方法

$git mv '变更前的文件' '变更后的文件'
$git commit -m '文件变更的原因'

四、通过git log查看版本演变历史

 通过git log查看版本演变命名如下

$git log --all #查看所有分支的历史
$git log --all --graph #查看图形化的log地址
$git log --oneline #查看单行的简洁历史
$git log --oneline -n4 #查看最近的四条简洁历史
$git log --oneline --all -n4 --graph #查看所有分支最近4条单行的图形化历史
$git help --web log #跳转到git log的帮助文档网页

五、通过图形界面工具来查看版本历史

$gitk #打开git图形化界面

六、探密.git目录

cat命令主要用来查看文件的内容,创建文件、合并文件,追加文件内容等功能。

.git目录

  • HEAD:指向当前的工作路径
  • config:存放本地仓库(local)相关的配置信息
  • refs/heads:存放分支
  • refs/tags:存放tag。又叫里程牌 (当这次commit是具有里程碑意义的 比如项目1.0的时候 就可以打tag)
  • objects:存放对象 .git/objects/ 文件夹中的子文件夹都是以哈希值的前两位字符命名 每个object由40位字符组成,前两位字符用来当文件夹,后38位做文件。

 cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
git cat-file 命令 显示版本库对象的内容、类型及大小信息。
git cat-file -t 命令 , 查看 git 对象的类型
git cat-file -p 命令, 查看 git 对象的内容
git cat-file -s 命令, 查看 git 对象的大小

七、commit、tree和blob三个对象之间的关系

Git主要包括commit、tree和blob三个对象。

Git对于内容相同的文件只会存一个blob,不同的commit的区别是commit、tree和有差异的blob,多数未变更的文件对应的blob都是相同的,这么设计对于版本管理系统来说可以省很多存储空间。

每一次commit都对应一个tree,那这个tree是包裹在最外层的一个tree,使用git cat-file -p 命令的时候查看tree内部的内容,这里的每一个文件夹都可以看成一个tree,而在这些文件夹中的具体文件内容两两不相等文件都是一个blob,内容相同的文件统一为一个blob。

八、分离头指针情况下的注意事项

1、分离头指针在企业或日常使用中, 到底有哪些具体的适用地点呢?

如果临时想基于某个commit做变更,试试新方案是否可行,就可以采用分离头指针的方式。测试后发现新方案不成熟,直接reset回其他分支即可。省却了建、删分支的麻烦了。

分离头指针指的是变更没有基于任何分支去做。所以进行分支切换的时候,在分离头指针上进行的commit操作,很可能被Git当做垃圾进行清理掉,如果认为这些变更是重要的,切记要跟某个分支绑在一起。

九、理解HEAD和branch

HEAD始终指向的是“工作点” 或者 “作用点”。

开始讲HEAD的使用,以及PARENT符号^和~。以下几点需要注意:
1、一个节点,可以包含多个子节点(checkout 出多个分支)
2、一个节点可以有多个父节点(多个分支合并)
3、^是~都是父节点,区别是跟随数字时候,^2 是第二个父节点,而~2是父节点的父节点
4、^和~可以组合使用,例如 HEAD~2^2

另外, "^"这个操作符代表父commit
当一个commit有多个父commit时,可以通过在符号“^”后面跟上一个数字来表示第几个父commit
比如,"A^" 等于 “A^1”(表示A这个commit的第1个父commit)
连续的“^”符号依次沿着父commit进行定位,直到某个祖先commit
~<n> 相当于连续n个符合“^”
所以,HEAD^^ 等同于 HEAD~2 是对的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值