文章目录
- Git 作用
- Git 安装
- Git 使用
- Git 仓库配置
- Git 工作原理
- Git 修改添加
- Git 查看日志
- Git 修改查询
- Git 版本回退
- 概念补充
Git 作用
Git 是一种分布式版本控制系统,它旨在追踪文件和文件夹的更改,并协助多人协作开发项目。
Git 安装
(Linux-ubuntu)
# 安装指令
sudo apt-get install git -y
# 查看是否安装成功
git --version
Git 使用
Git 仓库配置
(Linux-Ubuntu)
// 创建⼀个 Git 本地仓库
// 仓库是进⾏版本控制的⼀个⽂件⽬录
// 执行后会在当前目录下创建一个 .git 隐藏文件夹
git init
// 配置 Git
// Your Name 为用户名称
// --global 为可选项,如果加上,表示本主机上所有Git仓库都会用这个配置
git config [--global] user.name "Your Name"
// email@example.com 为用户邮箱
git config [--global] user.email "email@example.com"
// 查看当前配置
git config -l
// 取消设置
git config [--global] --unset user.name
git config [--global] --unset user.email
Git 工作原理
Git ⽐其他版本控制系统设计得优秀,因为 Git 跟踪并管理的是修改操作,⽽⾮⽂件。修改包括增、删、改。
Git 修改添加
⼯作区:是在电脑上你要写代码或⽂件的⽬录
暂存区:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,我们把暂存区有时也叫作索引(index)。
版本库:⼜名仓库,英⽂名 repository 。⼯作区有⼀个隐藏⽬录 .git ,它不算⼯作区,⽽是 Git 的版本库。这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原“。
在创建 Git 版本库时,Git 会为我们⾃动创建⼀个唯⼀的 master 分⽀。当对⼯作区修改(或新增)的⽂件执⾏ git add 命令时,暂存区⽬录树的⽂件索引会被更新。当执⾏提交操作 git commit 时,master 分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中。
文件添加的具体操作:
# 将工作区的指定文件加入暂存区
# git 也有其他用法如添加目录进暂存区等等
git add [file1] [file2]
# 将暂存区内容添加到本地仓库
# message为添加内容时的提示信息,不能被省略
# git
git commit -m "message"
Git 查看日志
## 查看提交日志
git log
结果解释: 黄色字体为 commit id , 其他包括用户名、邮箱、提交时间、更新提示等等
Git 修改查询
# 验证上次提交后有没有对文件进行过修改
git status
# 显⽰暂存区和⼯作区⽂件的差异
git diff [file]
# 查看版本库和⼯作区⽂件的区别。
git diff HEAD -- [file]
Git 版本回退
git reset 命令⽤于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下“回退”本质是要将版本库中的内容进⾏回退。
# git reset 命令⽤于回退版本
git reset [--soft | --mixed | --hard] [HEAD]
/*
--mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。
--soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
--hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重
*/
# 仅将工作区内容回退到最近⼀次 add 或 commit 时的状态
git checkout -- [file]
/* [HEAD]
HEAD 表⽰当前版本
HEAD^ 上⼀个版本
HEAD^^ 上上⼀个版本
HEAD~0 表⽰当前版本
HEAD~1 上⼀个版本
HEAD^2 上上⼀个版本
*/
Git 基础使用(2)分支管理
概念补充
.git 目录中,一些关键文件/ 目录 的介绍。
index: 暂存区, git add 后会更新该内容。
HEAD: 默认指向 master 分⽀的⼀个指针。
refs/heads/master: ⽂件⾥保存当前 master 分⽀的最新 commit id 。
objects: 包含了创建的各种版本库对象及内容,可以简单理解为放了 git 维护的所有修改。