Git―基本操作
Git
- ⛅认识 Git
- ⛅安装 Git
-
- Centos(7.6)
- Ubuntu
- ⛅Git―基本操作
-
- 创建本地仓库🍂
- 配置本地仓库🍂
- 工作区, 暂存区, 版本库🍂
-
- 版本库
- 工作区
- 添加文件🍂
- 查看文件🍂
- 修改文件🍂
- 版本回退🍂
-
- ☃️案例
- 撤销修改🍂
-
- ☃️案例
- 删除文件🍂
⛅认识 Git
想象如下场景, 一位画师收到了一份邀约画作的任务
这位画师便开始着手作画, 不久后产出作品(version1)
客户收到之后看了看对画师说, 画的很不错, 就是能不能再加些五颜六色的黑?
画师想, 您是甲方, 您说了算. 于是在原来的基础上产出作品(version2)
客户收到之后看了看对画师说, 画的很不错, 就是还缺那么一丝丝忧伤的感觉
画师想, 您是甲方, 您说了算. 于是在原来的基础上产出作品(version3)
客户收到之后看了看对画师说, 画的很不错, 但我还是喜欢你第一版的作品
画师想, 得亏我会用 Git, 于是画师顺利的拿到了第一版的作品并交付给客户
根据上面的描述, 我们大致对 Git 有所了解🍂
- Git 是一个版本控制器, 能够记录每次的修改及版本的迭代
譬如当客户问画师, 你第二版作品做出了什么修改的时候, 画师就可以利用 Git 查看做出了哪些修改
- Git 可以控制电脑中的所有格式文档
⛅安装 Git
Centos(7.6)
# 安装 Git 命令sudo yum install git -y# 查看 Git 版本git --version
Ubuntu
# 安装 Git 命令sudo apt-get install git -y# 查看 Git 版本git --version
⛅Git―基本操作
创建本地仓库🍂
# 创建 Git 目录mkdir gitcode# 进入创建的 Git 目录cd gitcode/# 创建本地仓库git init# 查看仓库树形结构tree .git/
有些小伙伴查看仓库树形结构会弹出 -bash: tree: command not found, 表明所在的系统中没有安装 tree 命令
安装 tree 命令sudo yum install tree
配置本地仓库🍂
配置 name 和 email 避免后续向本地仓库提交内容时出错
# 配置当前仓库下的 name git config user.name "在这里输入 name" # 配置当前仓库下的 email git config user.email "在这里输入 email" # 查看配置是否成功 git config -l # 删除配置的 name git config --unset user.name # 删除配置的 email git config --unset user.email # 配置所有仓库下的 name git config --global user.name "在这里输入 name" # 配置所有仓库下的 email git config --global user.email "在这里输入 email" # 删除所有仓库下的 name git config --global --unset user.name # 删除所有仓库下的 email git config --global --unset user.email
注意
通过 git config –global 配置的属性无法通过 git config –unset 进行删除
但可以通过 git config –global –unset 进行删除
工作区, 暂存区, 版本库🍂
版本库

图中的.git目录就是版本库
不允许对.git目录进行任何的修改

工作区

.git是版本库, 与.git处于同一目录下的被称为工作区
图中的ReadMe就处于工作区

- stage, 又称为暂存区或者索引(index). 暂存区存放的不是一个个 git 对象, 而是 git 对象的索引
- add, 将工作区中所有修改的内容添加至版本库的暂存区中
- 修改包括: (1) 添加 (2) 修改 (3) 删除
- commit, 将暂存区中的内容提交至 master 分支下. master 分支存放的也是 git 对象的索引

除去上述内容外, 还存在对象库(Objects), 从而到达对版本的控制
修改的工作区内容会写入到对象库的一个新的 git 对象中
(对比暂存区 → 存放的是 git 对象的索引)
添加文件🍂
# 添加指定文件至暂存区 git add 指定的文件 # 添加当前目录下所有文件至暂存区 git add . # 提交暂存区的全部文件到本地仓库 git commit -m "提交文件的描述信息" # 提交暂存区的指定文件到本地仓库 git commit file1 file2 -m "提交文件的描述信息" # 查看提交记录 git log # 查看提交记录(简洁版) git log --pretty=online
查看文件🍂
# 查看 .git 文件内容 git cat-file -p commitId
commitId 可以在 Objects 中查看


paraent, 表示上一次的commitId
修改文件🍂
# 查看从上一次提交到现在是否对文件进行过修改 git status # 查看指定文件的暂存区与工作区的差异 git diff "filename" # 查看指定文件的版本库与工作区的差异 git diff HEAD -- "filename"
版本回退🍂
# 版本回退 git reset [--soft | --mixed | --hard] [HEAD] # 查看 git 历史操作 → 用于查找对应的 commitId git reflog
回退的本质 → 将版本库的内容进行回退
- –mixed, 默认选项, 使用时可以不带该参数. 将暂存区的内容回退到指定版本
- –soft, 将版本库的内容回退到指定版本
- –hard, 将暂存区, 工作区的内容回退到指定版本
- HEAD
- 可写成commitId, 表示指定回退的版本
- HEAD, 表示当前版本
- HEAD^, 表示上一个版本
- HEAD^^, 表示上上一个版本
- 以此类推…
- 也可以使用~数字表示
- HEAD~0, 表示当前版本
- HEAD~1, 表示上一个版本
- HEAD~2, 表示上上一个版本
- 以此类推…
☃️案例
- ReadMe 文件
- version1.0 提交的内容 → git1
- version2.0 追加提交的内容 → git2
- 此时 ReadMe 文件的内容为 git1, git2
现在将 ReadMe 文件的内容进行回退
| 工作区 | 暂存区 | 版本库 | 参数 |
|---|---|---|---|
| git1 git2 | git1 git2 | git1 git2 | |
| git1 git2 | git1 git2 | git1 | –soft |
| git1 git2 | git1 | git1 | –mixed |
| git1 | git1 | git1 | –hard |
撤销修改🍂
- 对于撤销修改, 通常存在3种情况
- 工作区的代码还没有 add → 情况1
- 暂存区的代码还没有 commit → 请款2
- 已经 add & commit → 情况3
对于情况3, 想要撤销修改的前提是没有执行 push 操作到远程仓库
☃️案例
- ReadMe 文件
- version1.0 提交的内容 → git1
- version2.0 追加提交的内容 → git2
- 此时 ReadMe 文件的内容为 git1, git2
| 工作区 | 暂存区 | 版本库 | 情况 | 解决方式 |
|---|---|---|---|---|
| git1 git2 | git1 | git1 | 情况1 | git checkout — “filename” |
| git1 git2 | git1 git2 | git1 | 情况2 | 1. git reset HEAD 2. git checkout — ReadMe |
| git1 git2 | git1 git2 | git1 git2 | 情况3 | git reset –hard HEAD^ |
删除文件🍂
# 删除工作区的文件 & add 对应的文件 git rm "filename" # commit git commit "filename" -m "提交文件的描述信息"

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/1ac5de4e7a.html
