Git
⛅认识 Git⛅安装 GitCentos(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 提交的内容 → git1version2.0 追加提交的内容 → git2此时 ReadMe 文件的内容为 git1, git2
现在将 ReadMe 文件的内容进行回退
工作区暂存区版本库参数git1 git2git1 git2git1 git2git1 git2git1 git2git1--softgit1 git2git1git1--mixedgit1git1git1--hard
撤销修改
对于撤销修改, 通常存在3种情况
工作区的代码还没有 add → 情况1暂存区的代码还没有 commit → 请款2已经 add & commit → 情况3
对于情况3, 想要撤销修改的前提是没有执行 push 操作到远程仓库
☃️案例
ReadMe 文件
version1.0 提交的内容 → git1version2.0 追加提交的内容 → git2此时 ReadMe 文件的内容为 git1, git2
工作区暂存区版本库情况解决方式git1 git2git1git1情况1git checkout -- "filename"git1 git2git1 git2git1情况21. git reset HEAD 2. git checkout -- ReadMegit1 git2git1 git2git1 git2情况3git reset --hard HEAD^
删除文件
# 删除工作区的文件 & add 对应的文件
git rm "filename"
# commit
git commit "filename" -m "提交文件的描述信息"
精彩内容
发表评论